Ich habe um für eine ganze Weile sah versuchen, eine funktionierende Lösung zu finden, aber ich Zuflucht eine Frage zu stellen:C# Datagridview ContextMenu an der Stelle von der rechten Öffnung Klicken Sie
Ich habe eine Datagridview in einem Dialog-Formular in meiner app, dass ich möchte, dass ein ContextMenu bei Rechtsklick auf Zelle erscheint.
Ich habe die rechte Maustaste und das ContextMenu scheint gut, aber egal welche Lösung auf StackExchange ich versuche, es ist immer ziemlich viel versetzt.
Ist dies mit der Form und/oder es ist Elternteil? Oder verpasse ich hier nur etwas Dummes?
Dank Jamie
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;
}
}
}
}
bearbeiten
Sorry, ich habe versucht:
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
und wahrscheinlich ein paar andere.
Edit 2
Dies ist, was ich damit meine Offset - einige der Lösungen verursachen diese in bestimmten Größenordnungen variieren Offset (einige wirklich weit weg usw.) - aber alle sind wie die von der Offset tatsächlicher Cursor.
bearbeiten 3
Mein contextCell
ist ein new ContextMenu()
Was meinst du mit Offset? Wie im Kontext erscheint nicht, wo der Cursor ist? – TheValyreanGroup
Ich habe einen Screenshot bearbeitet :) Aber yeah - Offset vom Cursor ist –
Wenn Sie einen ContextMenuStrip verwenden, versuchen Sie 'contextCell.Show (Cursor.Position);' – LarsTech