Я посмотрел вокруг довольно долгое время, пытаясь найти рабочее решение, но я прибегая к задает вопрос:C# открытие ContextMenu в местоположении справа DataGridView Нажмите
У меня есть DataGridView в форме диалогового окна, в моем app, что я хочу, чтобы ContextMenu отображался в правой клавише ячейки.
У меня есть правый щелчок, и ContextMenu выглядит прекрасно, однако независимо от того, какое решение на StackExchange я пытаюсь, оно всегда достаточно смещено.
Связано ли это с формой и/или ее родителем? Или я просто тупо теряю что-то здесь?
Благодаря Джейми
Form.cs
private void dataGridContents_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
if (e.RowIndex > -1 && e.ColumnIndex > -1)
{
Debug.WriteLine("Cell right clicked!");
DataGridViewCell cell = (sender as DataGridView)[e.ColumnIndex, e.RowIndex];
contextCell.Show(cell.DataGridView, PointToClient(Cursor.Position));
if (!cell.Selected)
{
cell.DataGridView.ClearSelection();
cell.DataGridView.CurrentCell = cell;
cell.Selected = true;
}
}
}
}
Редактировать
К сожалению, я попытался:
new Point(e.X, e.Y)
new Point(e.Location.X, e.Location.Y)
new Point(MousePosition.X, MousePosition.Y)
PointToClient(e.X, e.Y)
new Point(Cursor.Position.X, Cursor.Position.Y)
Control.MousePosition
Cursor.Position
и, возможно, некоторые другие.
Edit 2
Это то, что я имею в виду смещение - некоторые решения вызывают это смещение варьировать в определенных величинах (некоторые действительно далеко и т.д.) - но все компенсируется, как те, из фактический курсор.
Редактировать 3
Мои contextCell
является new ContextMenu()
Что вы имеете в виду смещение? Как в контексте не появляется, где находится курсор? – TheValyreanGroup
Я отредактировал скриншот :) Но да - смещение от курсора –
Если вы используете ContextMenuStrip, попробуйте 'contextCell.Show (Cursor.Position);' – LarsTech