Hallo zusammen
Wie ich gesagt, ich habe massive Probleme mit dem DataGridView Control:
Im Event Validating kann ich ja e.Cancel = true setzte, damit die Aktion abgebrochen und die aktive Zelle wieder in den Input - Modus gelangt. Das ist ja schön und gut, nur kann ich dann leider auch den Schliessen - Knopf des Formulars nicht mehr klicken. Ausserdem funktioniert das ja nicht für ConstraintExceptions, welche ich im Event DataError behandeln muss. Wenn der Benutzer also einen Doppelten Datensatz eingibt, dann kann ich Validating gar nichts machen, da dieser ja erst beim Aufruf von EndEdit ausgelöst wird. Diese wiederum wird ja vom DataGridView ausgelöst, wenn ich in Validating nicht e.Cancel = true gesetzt habe.
Gibt es vielleicht eine Möglichkeit, den Zeitpunkt von EndEdit selbst festzulegen ohne gleich in den Virtual Mode wechseln zu müssen. Denn alles selber machen mag ich auch nicht!
Gruss Ishildur
Um bei fehlgeschlagener Validierung noch die Form schließen bzw. einen Focuswechsel machen zu können, musst Du Form.AutoValidate = AutoValidate.EnableAllowFocusChange setzen.
Was hast du an das DataGridView gebindet? Am besten wäre ein BindingSource, da müsstest du nur BindingSource.EndCurrentEdit() aufrufen!
Ansonsten musst du an den CurrencyManager ran:
((CurrencyManager).BindingContext[_dataGridView, "Tablename"]).EndCurrentEdit();
Im CellValidating Event überprüfst du, ob die Eingabe des Benutzers in Ordnung ist. Ich mache im CellEndEdit-Event folgendes:
_dataGridView.Rows[e.rowIndex].ErrorText = String.Empty;
So kann man das Editieren/Hinzufügen mit der Escapetaste abbrechen, und die Fehlermeldung kommt nimmer. Ansonsten musst du das Form.AutoValidate wie bereits erwähnt anpassen.
Gruss,
.unreal
@.unreal
Ja, ich habe ein BindingSource als DataSource des DataGridView, ber wenn ich im Validating - Event EndCurrentEdit aufrufe, dann bekomme ich doch das Problem, dass das DataGridView nach erfolgreichem validieren diese Methode noch einmal von sich aus aufruft oder vielleicht doch nicht?
ich zitiere herbivore von "Scrollen im Datagridview"
gedacht oder ausprobiert?
.unreal