DataGridViewColumn с ContextMenuStrip - Как я могу * всегда * получить связанную ячейку / строку? - PullRequest
0 голосов
/ 02 мая 2011

У меня есть DataGridViewColumn с ContextMenuStrip, назначенным в конструкторе.В обработчике события click элемента полосы меню мне нужно получить индекс строки, содержащей ячейку, которая породила контекстное меню.DataGridView.CurrentCell.RowIndex работает нормально, пока ячейка была выбрана левой кнопкой мыши, прежде чем показывается контекстное меню.Однако, если щелкнуть правой кнопкой мыши ячейку, не выделив ее первой, RowIndex всегда равно 0. Я попытался найти родителя элемента полосы контекстного меню и обработать цепочку до ячейки / столбца, но ContextMenuStrip.Parent - этовсегда нольЕсть ли способ, которым я могу сделать это, не используя расположение меню?Если я должен использовать местоположение, есть ли надежный способ сделать это?

1 Ответ

1 голос
/ 02 мая 2011

Щелчок правой кнопкой мыши - не единственный способ вызвать контекстное меню.Shift + F10 или клавиша контекстного меню также вызовут его.Вызов контекстного меню с клавиатуры не дает координаты X, Y, поэтому единственный способ узнать, каким должен быть контекст меню, - это концепция «выбранного в данный момент элемента».

Что я делаюпереопределяет событие MouseDown и, если нажата правая кнопка, выберите ячейку под мышью.

...