Ich verwende ein DataGridView in meiner WinForms-Anwendung. Mein Hauptziel ist es, dass die Eingabetaste nicht in die nächste Zeile im Raster bewegt wird. Ich möchte immer noch, dass die Eingabetaste den Bearbeitungsmodus bestätigt und beendet.
Es funktioniert großartig, außer das CellValidating-Ereignis wird nicht ausgelöst.
Momentan rufe ich nur manuell meine Validierungslogik auf, bevor ich EndEdit anrufe, aber es scheint, als würde ich etwas verpassen.
Ich denke, ich könnte OnCellValidating anrufen, aber dann würde ich mir Sorgen machen, dass ich ein anderes Ereignis verpasse. Was ich wirklich will, ist eine Variante von EndEdit (), die sich genauso verhält wie das Drücken von Enter in der letzten Zeile eines Rasters mit dem Hinzufügen von deaktiviert.
JJOs Code stürzt ab, wenn sich die Zelle im Bearbeitungsmodus befindet. Unterhalb wird die Validierungsausnahme vermieden:
%Vor%Quelle: Antwort von Kennet Harris hier
Wenn Ihre DataGridView DataSource BindingSouce ist, tun Sie dies (setzen Sie dies in Ihre Schlüsselverarbeitungsereignisse ):
%Vor%Wenn die DataSource Ihrer DataGridView DataTable ist:
%Vor%Danke für die Lösung. Meine Version ist ein wenig anders als Ihre, weil, wenn ich in die andere Zelle gehe, und mein Code e.cancel = false in der Zelle Validierungsereignis zurückgibt, wird ein Fehler generiert, sagt: "Operation war nicht erfolgreich, weil die Programm kann keine Zellenwertänderung festschreiben oder beenden ". Also versuche ich es zu versuchen, um dieses Problem zu überwinden.
das ist mein Code:
%Vor%Nein, aber Sie können das CellValidating-Ereignis manuell auslösen. Erstellen Sie einfach die richtigen Parameter. Alle Events sind eine Klasse, die das Observer Pattern verwendet, sie unterscheiden sich nicht von anderen Methoden. Wenn das nicht funktioniert, können Sie ein KeyPress-Ereignis für die Zelle erstellen und emulieren, indem Sie in der Zelle die Eingabetaste drücken, aber das könnte die Benutzeroberfläche des Benutzers stören. Setzen Sie das Karat einfach dorthin zurück, wo es war.
Tags und Links c# winforms datagridview