首页 > 解决方案 > 在运行时动态更改控件的 ContextMenuStrip 属性?

问题描述

我有一个 DataGridView,如果右键单击单元格,我想使用一个 ContextMenuStrip,如果单击单元格标题,我想使用不同的 ContextMenuStrip。我不想只是添加或删除或使“相同”CMS 的成员可见或不可见我认为这就像右键单击更改 DataGridView 的属性一样简单,但我一定是弄错了。

Private Sub DgvItems_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles DgvItems.CellClick
    Dim dgv As DataGridView = DgvItems
    If MouseButtons.Right Then
        Select Case md.HitTestInfo.Type
            Case DataGridViewHitTestType.ColumnHeader
                dgv.ContextMenuStrip = CmsDgvItemsColHdrs
                dgv.ContextMenuStrip.Show()
            Case DataGridViewHitTestType.Cell
                dgv.ContextMenuStrip = CmsDgvItemsRows
                dgv.ContextMenuStrip.Show()
        End Select
    End If
End Sub

有任何想法吗?

标签: vb.netdatagridviewcontextmenustrip

解决方案


呃。也许如果我第一次有正确的事件它会起作用。

这是正确的代码,无需dgv.ContextMenuStrip.Show()再次“”...

Private Sub DgvItems_CellMouseDown(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DgvItems.CellMouseDown
    Dim dgv As DataGridView = DgvItems
    If MouseButtons.Right Then
        Select Case md.HitTestInfo.Type
            Case DataGridViewHitTestType.ColumnHeader
                dgv.ContextMenuStrip = CmsDgvItemsColHdrs
            Case DataGridViewHitTestType.Cell
                dgv.ContextMenuStrip = CmsDgvItemsRows
        End Select
    End If
End Sub

推荐阅读