【发布时间】:2016-05-02 02:57:36
【问题描述】:
我有一个附加到 dataGridView 的 contextMenuStrip,当我右键单击 daaGridView 上的任何位置(包括标题和没有任何数据行的空白区域)时,会出现 contextMenuStrip。
我希望仅在右键单击数据行时出现 contextMenuStrip。我该怎么做?
感谢您的帮助。
【问题讨论】:
标签: c# datagridview contextmenu
我有一个附加到 dataGridView 的 contextMenuStrip,当我右键单击 daaGridView 上的任何位置(包括标题和没有任何数据行的空白区域)时,会出现 contextMenuStrip。
我希望仅在右键单击数据行时出现 contextMenuStrip。我该怎么做?
感谢您的帮助。
【问题讨论】:
标签: c# datagridview contextmenu
您需要使用 datagridview 的 HitTest 方法来确定是否单击了任何数据行。在网格的 Mousedown 事件中,使用以下代码:
var info = dataGrid1.HitTest(e.X,e.Y);
if(info.RowIndex!=-1)// datarow is clicked.
contextMenu.Show(dataGrid1, e.Location);
对于列标题或背景区域,info.RowIndex 将为 -1。也不要在设计时预设 dataGrid1.ContextMenu 属性(保持未分配)。这样你的dataGrid1就不能默认右键显示contextMenu了。
【讨论】: