2017-05-21 1 views
0

Heay Jungs, Ich habe diesen Code. obwohl ich nicht glaube, es ein Problem darin istCant lesen Wert von Datagridview Zelle vor Cellenedit

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    foreach (DataGridViewCell cell in row.Cells) 
    { 
     Console.WriteLine(cell.Value.ToString()); 
    } 
} 

Aber aus irgendeinem dummen Grund, es hat nicht den Wert der Zelle zeigen, dass ich die Bearbeitung beendet haben. Gibt es eine Eigenschaft, die mir erlauben würde, das zu tun?

Ich habe ein Formular mit Datagridview. Ich schreibe "aaa" in die erste Zelle und die erste Zeile, schreibe "bbb" in die zweite Zelle und schließe dann das Formular. OnClose event führt Code von oben und die Ausgabe ist "aaa". Die Sache ist, dass es nicht passiert, wenn ich, bevor ich das Formular schließe, zum Beispiel in die erste Zelle in der zweiten Zeile klicke (das bedeutet, dass ich das EndCellEdit-Ereignis in der zweiten Zelle in der ersten Zeile triggere).

Vielen Dank im Voraus.

+0

Was zeigt es? Kannst du das Problem deutlicher erkennen? – FortyTwo

+0

Da geht man Mann. – pajamac

Antwort

2

In DataGridView wird beim Ändern des Werts einer Zelle die CellValueChangedEvent nur ausgelöst, wenn Sie die Zelle verlassen (z. B. wenn Sie in Ihrem Fall auf eine andere Zelle klicken). Das Ereignis wird nicht ausgelöst, wenn Sie den Wert ändern und anschließend das Formular schließen. Für eine Problemumgehung in Ihrem Formular, das Ereignis schließt, können Sie Ihren Fokus von dem DataGridView entfernen, der CellValueChangedEvent auslösen wird. Sie können den Fokus auf ein Label oder ein anderes Steuerelement Ihres Formulars festlegen.

+0

Lesen Sie [this] (https://msdn.microsoft.com/en-us/library/system.windows.forms.control.focus (v = vs.110) .aspx), wenn Sie nicht wissen, wie Sie den Fokus ändern – FortyTwo

+0

Danke genau, wonach ich gesucht habe. – pajamac

Verwandte Themen