1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
// Ajout des handlers quand le contrôle d'édition apparait
// Seulement si c'est un TextBox
if (e.Control is TextBoxBase)
{
e.Control.KeyPress += new KeyPressEventHandler(editingControl_KeyPress);
e.Control.VisibleChanged += new EventHandler(editingControl_VisibleChanged);
}
}
void editingControl_VisibleChanged(object sender, EventArgs e)
{
// Suppression des handlers quand le contrôle d'édition disparait
Control ctl = sender as Control;
if (!ctl.Visible)
{
ctl.KeyPress -= editingControl_KeyPress;
ctl.VisibleChanged -= editingControl_VisibleChanged;
}
}
void editingControl_KeyPress(object sender, KeyPressEventArgs e)
{
// On accepte seulement les chiffres et le séparateur décimal
// Il faut aussi accepter la touche backspace ('\b')
// Au passage, on remplace aussi le point par le
// séparateur décimal de la culture courante (virgule en français)
if (e.KeyChar == '.')
e.KeyChar = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator[0];
bool ok = false;
if (char.IsDigit(e.KeyChar))
ok = true;
if (e.KeyChar == System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator[0])
ok = true;
if (e.KeyChar == '\b')
ok = true;
e.Handled = !ok;
} |
Partager