CellValueChanged vs. CellValidating-Ereignisse für DataGridView

9

Was ist der beste Ort, um Validierungslogikcode und Code für bedingte Formatierung für ein DataGridView zu implementieren?

In vielen Büchern und Artikeln, die ich über dieses Steuerelement gelesen habe, scheint es darauf hinzuweisen, dass das entsprechende Ereignis, das dafür verantwortlich ist, das CellValidating-Ereignis ist. Nun, der Name deutet mehr darauf hin.

Jedoch löst dieses Ereignis ein bisschen zu oft für meinen Geschmack aus, und ich bin nicht sicher, dass es erforderlich ist. Zum Beispiel wird dieses Ereignis jedes Mal ausgelöst, wenn die Benutzer zu einer anderen Zeile wechseln.

Andererseits scheint das CellValueChanged-Ereignis nur dann auszulösen, wenn sich der Wert der Zelle ändert, was bedeutet, dass der Validierungscode nur ausgeführt wird, wenn sich der Wert ändert und nicht jedes Mal, wenn ein Benutzer Zellen ändert.

Nun, da so viele Bücher das CellValidating-Ereignis verwenden, frage ich mich, ob es (in der Anzeige zum Beispiel) ein Problem mit der Verwendung von CellValueChanged gibt?

Ich verstehe, dass die Auswirkung auf die Leistung bei der Verwendung einfacher Validierungs- und bedingter Hervorhebungsregeln irrelevant sein sollte, aber ich würde es vorziehen, nicht nutzlosen Code jedes Mal auszuführen, wenn der Benutzer in eine andere Zelle wechselt, wenn dies vermieden werden kann.

Danke,

    
Kharlos Dominguez 12.08.2010, 15:57
quelle

2 Antworten

4

Ich verwende CellValueChanged derzeit in einem Raster mit benutzerdefinierter Validierung und hatte keine Probleme mit der Anzeige oder irgendetwas anderem.

Ich habe dieses Ereignis verwendet, weil ich eine bestimmte Reihenfolge von Ereignissen auslösen wollte, aber nur, wenn der Benutzer den Wert einer Zelle ändert.

Ich habe nicht viel von einem Performance-Hit bemerkt (getestet mit 100 - 5000 Zeilen).

Ich denke, am Ende kommt es darauf an, was Ihre Validierungsanforderungen sind. In meinem Fall hat CellValueChanged getan, was ich wollte / brauchte.

BEARBEITEN

Der größte Vorteil des CellValidating-Ereignisses besteht darin, dass Sie den Benutzer daran hindern können, eine Zelle zu verlassen, wenn der eingegebene Wert Ihre Validierung nicht besteht. Ich wollte das nicht tun.

    
Tony Abrams 12.08.2010, 16:06
quelle
-1

Es ist einfach, innerhalb des CellValidatingEvent müssen Sie prüfen, ob eine Bedingung richtig ist. Wenn Ihre Bedingung falsch ist, fügen Sie einfach diesen Code e.cancel hinzu. Es verhindert, dass der Cursor seinen Fokus verliert

    
arjun nk 25.01.2018 03:31
quelle

Tags und Links