C# и расположение на формах
-
18-09-2019 - |
Вопрос
Я пытаюсь, чтобы объект 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