我想设置不同ContextMenuStrip
for DataGridView
Cells
, RowHeaders
and ColumnHeaders
.
这个想法是,当我右键单击这些项目中的任何一个时,会出现一个不同的ContextMenuStrip
被展示。我该怎么做呢?
使用 DataGridView 的MouseDown
事件来测试是否单击了鼠标右键,如果是,则使用关联的HitTestInfo
属性来确定是否单击了单元格、行或列。使用此信息来显示您需要的 ContextMenuStrip。
这是一个例子MouseDown
执行此操作的事件。要尝试该示例,请在表单上放置一个 DataGridView 和三个 ContentMenuStrip。将 ContentMenuStrip 命名为 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 的菜单项中设置文本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)