Meilleur auteur de réponses
interdire la saisie des chiffres dans un textbox donne

Question
-
Réponses
-
Bonjour Arnold
pour interdire la saisie de lettres (et uniquement les lettres), vous pouvez utiliser l'évenement KeyPress de la textbox :
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ',') { e.Handled = true; } // autorise à entrer une virgule ',' pour les décimales (et une seule) if (e.KeyChar == ',' && (sender as TextBox).Text.IndexOf(',') > -1) { e.Handled = true; } }
pour interdire la saisie de chiffres (et uniquement les chiffres),
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && char.IsDigit(e.KeyChar)) { e.Handled = true; } }
pour rappel , sur la propriété Handled :
Handled=true annule l'événement KeyPress. (source: msdn)
et sur la méthode char.IsControl:
true si c est un caractère de contrôle ; sinon, false. (source : msdn)
Les caractères de contrôle sont des caractères de mise en forme non imprimables, tels qu'ACK, BEL, CR, FF, LF et VT. La norme Unicode assigne les points de code suivants aux caractères de contrôle : de \U0000 à \U001F, \U007F et de \U0080 à \U009F. Selon la norme Unicode, ces valeurs seront interprétées comme des caractères de contrôle, sauf si leur utilisation est définie d'une autre manière par une application. Les caractères de contrôle valides sont des membres de la catégorie UnicodeCategory.Control.
Cdt,
Xavier Averbouch
Avanade , FRANCE
If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful".
- Proposé comme réponse Xavier Averbouch [xavave] mardi 22 mars 2011 06:33
- Marqué comme réponse Alex Petrescu vendredi 25 mars 2011 14:15
Toutes les réponses
-
Bonjour Arnold
pour interdire la saisie de lettres (et uniquement les lettres), vous pouvez utiliser l'évenement KeyPress de la textbox :
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && e.KeyChar != ',') { e.Handled = true; } // autorise à entrer une virgule ',' pour les décimales (et une seule) if (e.KeyChar == ',' && (sender as TextBox).Text.IndexOf(',') > -1) { e.Handled = true; } }
pour interdire la saisie de chiffres (et uniquement les chiffres),
private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && char.IsDigit(e.KeyChar)) { e.Handled = true; } }
pour rappel , sur la propriété Handled :
Handled=true annule l'événement KeyPress. (source: msdn)
et sur la méthode char.IsControl:
true si c est un caractère de contrôle ; sinon, false. (source : msdn)
Les caractères de contrôle sont des caractères de mise en forme non imprimables, tels qu'ACK, BEL, CR, FF, LF et VT. La norme Unicode assigne les points de code suivants aux caractères de contrôle : de \U0000 à \U001F, \U007F et de \U0080 à \U009F. Selon la norme Unicode, ces valeurs seront interprétées comme des caractères de contrôle, sauf si leur utilisation est définie d'une autre manière par une application. Les caractères de contrôle valides sont des membres de la catégorie UnicodeCategory.Control.
Cdt,
Xavier Averbouch
Avanade , FRANCE
If a post answers your question, please click "Mark As Answer" on that post and "Vote as Helpful".
- Proposé comme réponse Xavier Averbouch [xavave] mardi 22 mars 2011 06:33
- Marqué comme réponse Alex Petrescu vendredi 25 mars 2011 14:15
-
-
Salut,
j'ai du également programmer cela pour mon programme.
Ici en Suisse, les romands utilisent la touche . comme décimale alors que les Suisse-allemands utilisent la ,
Voici mon code qui permet d'utiliser le séparateur décimal du système.
Je vois maintenant que j'aurais pu utiliser le ISDigit c'est beaucoup mieux donc ne reprenez pas cette partie du code.
Si ça peut vous rendre service...
protected override void OnKeyDown(KeyEventArgs e) { e.SuppressKeyPress = false; if (_IsNumeric) { // allow only numeric and Ctrl-Key and . if ( (e.KeyValue >= 48 && e.KeyValue <= 57) || (e.KeyValue >= 96 && e.KeyValue <= 105) || (e.KeyCode == Keys.Home || e.KeyCode == Keys.End || e.KeyCode == Keys.Left || e.KeyCode == Keys.Right || e.KeyCode == Keys.Delete || e.KeyCode == Keys.Back) || (e.KeyCode == Keys.Decimal && !Text.Contains(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator)) || (e.Control && (e.KeyCode == Keys.C || e.KeyCode == Keys.V || e.KeyCode == Keys.X))) e.SuppressKeyPress = false; else e.SuppressKeyPress = true; } base.OnKeyDown(e); }
le code à retenir est donc le suivant :
!Text.Contains(CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator
Bonne soirée