Rétablir la valeur d'une cellule de DataGridView après CellValueChanged
Bonjour,
Dans mon application, un utilisateur dispose d'un DataGridView. Dans ce DataGridView, il a une colonne éditable où il doit strictement saisir un décimal.
Afin de vérifier cette saisie, j'ai inscris mon DataGridView à l'évènement CellValueChanged. A chaque modification de valeur, je vérifie via une expression régulière si la saisie est correcte.
Si ce n'est pas le cas, je souhaiterais rétablir la situation initiale en annulant la saisie de l'utilisateur (son caractère qui ne répond pas aux critères de mon expression régulière). Le problème est que je n'arrive pas à modifier la valeur de ma cellule dynamiquement.
Je précise que mon DataGridView est relié à un DataTable.
Voici mon code actuel dans l'évènement CellValueChanged (je ne vous met pas tout) :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
coeff = dgvr.Cells[3].Value.ToString();
if (!System.Text.RegularExpressions.Regex.IsMatch(coeff, @"^\d{1,5}\,?\d{0,2}$"))
{
_FragmentDataGridView.CellValueChanged -= _FragmentDataGridView_CellValueChanged;
// Suppression du dernier caractère
if (coeff.Length > 1)
dgvr.Cells[3].Value = coeff.Substring(0, coeff.Length - 1);
else
dgvr.Cells[3].Value = "";
// Tentative de refraichissement du DataGridView en veillant a desinscrire le composant à mon evenement
dgvr.Cells[3].DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
dgvr.Cells[3].DataGridView.RefreshEdit();
_FragmentDataGridView.CellValueChanged += _FragmentDataGridView_CellValueChanged;
return;
} |
dgvr est ma cellule concernée dans mon DataGridView.
Merci pour vos réponses!
Pour TomLev le specialiste
Bonjour TomLev
Sais tu si lors de EndEdit la valeur est DEJA changée dans la datatable ?
D'une maniere générale sais tu ou l'on peut trouver la chronologie des evenement pour ce genre de questions ?
Merci à toi