Kontextmenü in einem DataGridView
Eigentlich eine ganz einfache, normale Sache:
Man möchte via einem Rechtsklick ein Kontextmenü auf einer Zelle öffnen, die sich in einem DataGridView befindet. Dies sollte möglichst mit einem einzigen ContextMenuStrip geschehen, was am DataGridView hängt. Klingt immer noch ganz einfach. Nun soll sich das Kontextmenü zwar überall öffnen, aber nur auf einer Datenzelle bestimmte Optionen zulassen (z.B. Löschen), also nicht im Kopf und erst recht nicht im leeren Bereich. Klingt immer noch nach einem ganz normalen Vorgehen, was man jeden Tag brauchen könnte. Nun könnte man meinen, dass dies von den Herrschaften bei Microsoft auch so gesehen wird und .NET solch eine Funktion unterstützt… nunja… soweit die Theorie…
Praxis:
-
dataGridView.CellContextMenuStripNeeded += new DataGridViewCellContextMenuStripNeededEventHandler(dataGridView_CellContextMenuStripNeeded);
-
…
-
private void dataGridView_CellContextMenuStripNeeded(object sender, DataGridViewCellContextMenuStripNeededEventArgs e)
-
{
-
if (e.ColumnIndex > -1 && e.RowIndex < -1)
-
{
-
//Menüitem aktivieren
-
}
-
else {
-
//Menuitem deaktivieren
-
}
-
}
Ich hatte da eine etwas einfachere Lösung gehofft. Nun möchte ich sogar noch Daten sortieren, wenn man eine Kopfzelle anklickt. Klingt einfach? Lösung folgt die Tage…
















