Вопрос

Я пытаюсь, чтобы объект Contextmenustrip отображался на координатах, которые щелкнут правой кнопкой мыши на конкретном объекте формы. Я зацепил событие CellmouseClick Forms и могу получить значения x, y для события, но они, кажется, относится к этому конкретному контролю. Например, если я использую Contextmenu.show (Ex, EY), он будет отображаться в верхнем руке экрана, в отличие от того, где мышь находится в этой форме.

Как я могу сделать то, что я хочу сделать? Если это помогает, управление формой, в которую я привлекаю, является DataGridView.

Это было полезно?

Решение

DataGridView имеет Контекстное меню свойство, которое вы можете использовать для этого.

Другие советы

Я бы просто установил Contextmenustrip свойство Из DataGridView в вашу контекстную инфекцию, тогда он всегда будет отображаться, где вы щелкните правой кнопкой мыши по сетке.

Вы можете установить это в коде, а также в окне свойств дизайнера.

Попробуйте следующий код:

ContextMenuStrip myMenuStrip = new ContextMenuStrip();
myMenuStrip.Show(myDataGrid , new Point(0 , 0));

и для контекста:

ContextMenu myMenu = new ContextMenu();
myMenu.Show(myDataGrid , new Point(e.X , e.Y));

вам нужно проверить на левую и верхнюю свойства

x + control.left
y + control.top
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top