DataGridView mit Contextmenü
-
Hallo,
ich wollte mein DatagridView mit einem Contextmenu versehen und habe mir folgendes Beispiel angeschaut.
http://msdn.microsoft.com/de-de/library/system.windows.forms.datagridviewrow.contextmenustrip.aspxUnd habe es wie folgt umgesetzt
ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem(); DataGridViewCellEventArgs mouseLocation; private void AddContextMenu() { toolStripItem1.Text = "Bearbeiten"; toolStripItem1.Click += new EventHandler(toolStripItem1_Click); ContextMenuStrip strip = new ContextMenuStrip(); foreach (DataGridViewColumn column in dataGridView.Columns) { column.ContextMenuStrip = strip; column.ContextMenuStrip.Items.Add(toolStripItem1); } } private void toolStripItem1_Click(object sender, EventArgs args) { int Test = mouseLocation.RowIndex; }
Bei mouseLocation gibt der Compiler die Warnung aus, dass kein Wert zugewiesen worden ist und zur LFZ, dass int Test = mouseLocation.RowIndex; NULL ist. Was muss ich verändert damit es funktioniert? danke
-
So ich habe die Lösung erarbeitet
StattDataGridViewCellEventArgs mouseLocation;
muss man
DataGridViewCellMouseEventArgs mouseLocation;
verwenden und die im folgenden Event setzten
private void dataGridView_CellMouseUp(object sender, DataGridViewCellMouseEventArgs e) { mouseLocation=e; }
dann funktioniert o.g. Code
-
Vllt nettes FAQ oder bin ich der einzige der so dumm war um über den Fehler bzw nicht ausformulierten Quellcode bei msdn zu fallen?^^
-
Wayne2011 schrieb:
Vllt nettes FAQ oder bin ich der einzige der so dumm war um über den Fehler bzw nicht ausformulierten Quellcode bei msdn zu fallen?^^
Ich habe gerade keinen Zugriff auf die MSDN (die Seite ist seit Stunden down) und kann daher nur meine MSDN Library auf meinem Computer zur Hilfe nehmen. Aber bei mir sieht das Beispiel so aus:
ToolStripMenuItem toolStripItem1 = new ToolStripMenuItem(); private void AddContextMenu() { toolStripItem1.Text = "Redden"; toolStripItem1.Click += new EventHandler(toolStripItem1_Click); ContextMenuStrip strip = new ContextMenuStrip(); foreach (DataGridViewColumn column in dataGridView.Columns) { column.ContextMenuStrip = strip; column.ContextMenuStrip.Items.Add(toolStripItem1); } } private DataGridViewCellEventArgs mouseLocation; // Change the cell's color. private void toolStripItem1_Click(object sender, EventArgs args) { dataGridView.Rows[mouseLocation.RowIndex] .Cells[mouseLocation.ColumnIndex].Style.BackColor = Color.Red; } // Deal with hovering over a cell. private void dataGridView_CellMouseEnter(object sender, DataGridViewCellEventArgs location) { mouseLocation = location; }
Entscheidender Unterschied, welcher mir auffällt, ist das behandeln von
CellMouseEnter
. Zudem steht bei mir noch, dass das Ganze teil eines grösseren Beispiels ist, welches man herunterladen kann und man hier somit nur einen Ausschnitt sieht. Wäre also durchaus vernünftig, wenn etwas nicht so geht, wie man es erwartet, zuerst das ganze Beispiel anzuschauen und zu prüfen, ob dieses auch nicht geht oder ob man einfach einen Fehler gemacht hat. Ich glaube, dass du einfach nur einen Fehler gemacht hast und nicht ganz genau hingeschaut hastUnd zuletzt, wenn in der MSDN wirklich ein Fehler wäre, dann sollte man dies in der MSDN melden und nicht hier in der FAQ abspeichern.
Grüssli