Ich habe mittlerweile eine Lösung für das Problem.
Vielleicht hat ja mal jemand das Gleiche.
Das Ereignis ItemClicked des BindingNavigators wird recht früh ausgelöst und eigent sich in meinem Fall.
Da ich bei jedem Wechsel des sichtbaren Datensatzes speichern will (ich bin hier in der Detailansicht meiner Daten), versuche ich also bei jedem Click auf den BindingNavigator die Speicherung in einem try and catch Block. Schlägt die Speicherung fehl,
ist es wichtig CancelEdit() zu verwenden, damit die Bearbeitung auch abgebrochen wird. Sonst bleibt das Programm trotz der Exceptionbehandlung mit dem Fehler NoNullAllowedExcpetion hängen.
private void kundenBindingNavigator_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
try
{
this.Validate();
this.kundenBindingSource.EndEdit();
this.tableAdapterManager.UpdateAll(this._P_ODataSet);
}
catch (NoNullAllowedException)
{
MessageBox.Show("Pflichtfelder, wie Name, müssen gefüllt werden!", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.kundenBindingSource.CancelEdit();
}
catch (Exception ex)
{
MessageBox.Show("Ein Fehler ist aufgetreten! Bitte verständigen Sie den Support.\n\n\n\nKomplette Fehlermeldung, für den Support:\n\n" + ex.ToString(), "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error);
this.kundenBindingSource.CancelEdit();
}
}
Gruß
Markus