Слияние пользовательского ContextMenuStrip с системным контекстным меню редактирования в DataGridView - PullRequest
1 голос
/ 29 октября 2008

У меня есть DataGridView в приложении VB.NET, которое я ограничил только выбором ячеек. Элемент управления имеет два столбца, первый не редактируется, второй - редактируемый. У меня есть ContextMenuStrip, который предоставляет некоторые дополнительные функции, и я могу заставить его появляться, когда редактируемая ячейка получает щелчок правой кнопкой мыши и не находится в режиме редактирования. Основываясь на примере на форуме Microsoft , я теперь могу показать контекстное меню, когда редактируемая ячейка получает щелчок правой кнопкой мыши в то же время в режиме редактирования. Этот код выглядит следующим образом:

Private Sub DataGridView1_EditingControlShowing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewEditingControlShowingEventArgs) Handles DataGridView1.EditingControlShowing
    If TypeOf e.Control Is TextBox Then
        With DirectCast(e.Control, TextBox)
            .ContextMenuStrip = ContextMenuStrip1
        End With
    End If
End Sub

Это, однако, полностью перезаписывает системное контекстное меню элемента управления редактированием. Как я могу объединить мою полосу контекстного меню (ContextMenuStrip1) с системным контекстным меню?

Для получения дополнительной информации я использую VS2008, но ориентируюсь на платформу .NET 2.0.

1 Ответ

0 голосов
/ 30 октября 2008

В интересах кратковременной простоты я создал новое контекстное меню, которое содержит элементы меню, аналогичные существующему системному контекстному меню с моими дополнительными необходимыми пунктами меню. Элемент управления Textbox содержит функции, которые изначально предоставлялись каждому элементу меню, поэтому я просто выполняю необходимые вызовы в обработчиках событий для каждого элемента меню.

Проблема с этим подходом заключается в том, что если в будущем Microsoft изменит системное меню, мне придется добавить больше пунктов меню, больше обработчиков событий и больше кода отключения / включения. В долгосрочной перспективе, было бы лучше найти дескриптор контекстного меню и слить в мои пункты пользовательского меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...