2010-02-04 1 views
0

Я пытаюсь найти объект contextmenustrip на координатах, которые щелкнул правой кнопкой мыши на конкретном объекте формы. Я подключился к формам события CellMouseClick, и я могу получать значения X, Y для события, но они, похоже, относятся к этому конкретному элементу управления. Например, если я использую contextmenu.Show (e.X, e.Y), он будет отображаться в верхнем углу экрана, в отличие от того, где мышь находится в этой форме.C# и местоположения в формах

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

ответ

2

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

0

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

x + control.left 
y + control.top 
2

Я бы просто установить ContextMenuStrip property из DataGridView вашего ContextMenuStrip, то он всегда будет появляться где ваша правая кнопка мыши на сетке.

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

1

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

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

и для ContextMenu:

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