DataGridView DataError Événement Préserver ligne non valide

Je suis en train de travailler sur une application Winforms qui affiche un DataGridView, liés à une table de base de données.

Il permet l'insertion frais d'entrées, et fait de la validation des données.

Qu'une colonne est vide, ou l'une des contraintes unique est violée, le DataError événement appelle cette fonction:

protected void _data_error(object sender, DataGridViewDataErrorEventArgs e)
{
    MessageBox.Show(this,e.Exception.Message,"Error");
    e.ThrowException = false;
    e.Cancel = false;
}

Lorsque le pop-up est fermé, la nouvelle ligne qui a été modifié est supprimé.
Lorsque cela est fait pour une ligne qui a déjà été enregistré (une opération de mise à jour) la ligne perd ses modifications et perd le focus.
Je suppose que cela signifie que je dois signaler l'application pour garder la ligne modifiable, mais je ne sais pas comment faire.

Paradoxalement, si je remplace le gestionnaire d'événement avec un throw(e.Exception) l'exception est lancée au vent et est capté par l'exception non interceptée, mais la nouvelle ligne est conservée après que la fenêtre se ferme.

Comment puis-je préserver la nouvelle ligne sur un DataError événement?

Edit:

Ma prochaine pensée était de sauver la ligne et l'ajouter à la DataGridView de la source de données après la MessageBox s'affiche.
Qui ne fonctionne pas en raison de l'ajout de données à la source de données de complément comme un commis ligne qui lève une exception en raison de données non valides vs en conservant les données comme un modifiable ligne afin que la validation ne se produise pas.

OriginalL'auteur Chris | 2012-11-21