我想为datagridview单元格,rowheaders和columnheaders设置不同的上下文菜单。 这个想法是,当我右键单击这些项目中的任何一个时,显示不同的上下文菜单。我该怎么做呢?datagridview单元格,rowheader和columnheader的上下文菜单
7
A
回答
17
使用DataGridView的MouseDown
事件来测试是否点击了鼠标右键,如果是,请使用关联的HitTestInfo
属性确定是否单击了单元格,行或列。使用此信息显示您需要的ContextMenuStrip。
下面是一个例子MouseDown
这样做的事件。尝试在表单上放置DataGridView和三个ContentMenuStrips。将ContentMenuStrips命名为mnuCell,mnuRow和mnuColumn。
Private Sub DataGridView1_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseDown
If e.Button = Windows.Forms.MouseButtons.Right Then
Dim ht As DataGridView.HitTestInfo
ht = Me.DataGridView1.HitTest(e.X, e.Y)
If ht.Type = DataGridViewHitTestType.Cell Then
DataGridView1.ContextMenuStrip = mnuCell
mnuCell.Items(0).Text = String.Format("This is the cell at {0}, {1}", ht.ColumnIndex, ht.RowIndex)
ElseIf ht.Type = DataGridViewHitTestType.RowHeader Then
DataGridView1.ContextMenuStrip = mnuRow
mnuRow.Items(0).Text = "This is row " + ht.RowIndex.ToString()
ElseIf ht.Type = DataGridViewHitTestType.ColumnHeader Then
DataGridView1.ContextMenuStrip = mnuColumn
mnuColumn.Items(0).Text = "This is col " + ht.ColumnIndex.ToString()
End If
End If
End Sub
在这里,我分配在DataGridView的ContextMenuStrip属性到合适的ContextMenuStrip该项目右侧点击(单元格,行或列)。为了演示如何进一步自定义ContextMenuStrips的行为,我还设置了每个ContentMenuStrips菜单项中的文本。
1
在DataGridView的MouseDown事件上,使用DataGridView.HitTest方法检查点击的内容。然后,您可以根据点击的内容切换上下文菜单。
相关问题
- 1. DataGridView select RowHeader或ColumnHeader
- 2. DataGridView在RowHeader的ColumnHeader中放置文本
- 3. WPF表格DataGridView上下文菜单
- 4. 当单元格被选中时,如何突出显示DataGrid的ColumnHeader和RowHeader?
- 5. Excel单元格上下文菜单 - 宏
- 6. C#DataGridView右键单击上下文菜单单击检索单元格值
- 7. 在DataGridView上打开上下文菜单
- 8. DataGridView标准的上下文菜单
- 9. 的dataGridView上下文菜单功能
- 10. dataGridView受控上下文菜单点击
- 11. C#DataGridView动态上下文菜单
- 12. 禁用DataGridView系统上下文菜单
- 13. DataGridView单元格
- 14. QTableWidget - 仅用于特定单元格/列的上下文菜单
- 15. DataGridView单元格文本和单元格值
- 16. 如何在DataGridView上使用右键单击上下文菜单?
- 17. LongListSelector和上下文菜单
- 18. Android:ViewPager和上下文菜单
- 19. Android:ExpandableListView和上下文菜单
- 20. wxWidgets和上下文菜单
- 21. PyQt和上下文菜单
- 22. RightDoubleClick和上下文菜单
- 23. syncfusion,上下文菜单,允许多个单元格选择
- 24. 上下文菜单不显示在发生右键单击的datagridview单元格附近
- 25. 使用菜单类的网格的上下文敏感菜单
- 26. 更新datagridview单元格的值和在datagridview上显示
- 27. 上下文菜单
- 28. 上下文菜单
- 29. 添加菜单上下文菜单
- 30. DataGridView编辑WinForms上的单元格
谢谢,我有三个contextmenu,一个用于行,列和单元格。我把这个行的contextmenu放在这行''这是行'',并且禁用了其他两个它仍然显示的行,但是当我点击一个单元格时它显示了行上下文菜单。 – Smith
@史密斯我用我认为你需要的东西更新了我的例子。 –