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) :
dgvr est ma cellule concernée dans mon DataGridView.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
Merci pour vos réponses!
Partager