您好,
一般情况下, 在绑定一个ContextMenuStrip到FpSpread后,无论右击FpSpread的任何地方,该ContextMenuStrip都将弹出。
为了仅在指定单元格右击时才弹出该ContextMenuStrip,需要自己写代码处理。
下面的例子代码演示了在FpSpread的MouseDown事件处理器中如何完成您需要的功能。在该示例中,仅当您右击Cells[1,1]时, 该ContextMenuStrip才被绑定到FpSpread然后显示出来。稍微改动一下该例子代码,就能实现在Spread的不同部位右击使其显示不同的context menu。请参考。
void fpSpread1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == System.Windows.Forms.MouseButtons.Right)
{
if (this.fpSpread1.ContextMenuStrip != null)
{
this.fpSpread1.ContextMenuStrip = null;
}
HitTestInformation hitTest = this.fpSpread1.HitTest(e.X, e.Y);
if (hitTest.Type == HitTestType.Viewport && hitTest.ViewportInfo.Column == 1 && hitTest.ViewportInfo.Row == 1)
{
this.fpSpread1.ContextMenuStrip = this.contextMenuStrip1;
}
}
} |