Динамически изменять свойство ContextMenuStrip элемента управления во время выполнения? - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть 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

Есть идеи?

1 Ответ

0 голосов
/ 02 сентября 2018

Duh. Возможно, если бы у меня было ПРАВОЕ СОБЫТИЕ в первый раз, это сработало бы.

Вот правильный код без необходимости "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
...