Masquage une zone de texte pour les numéros seulement, mais l'habitude d'accepter BackSpace
Question
J'ai une zone de texte que je voudrais que des chiffres. Mais si je frappe le mauvais numéro, je ne peux pas backspace pour la corriger. Comment puis-je permettre backspaces de travailler. Merci
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsNumber(e.KeyChar) != true)
{
e.Handled = true;
}
}
La solution
Vous pouvez ajouter un contrôle pour permettre des caractères de contrôle ainsi:
if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true)
{
e.Handled = true;
}
Mise à jour: en réponse au commentaire de personne-b du code s / il suggère le style suivant (qui est aussi la façon dont je personnellement écrire ceci):
if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
{
e.Handled = true;
}
Autres conseils
La réponse correcte est:
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b');
}
Vous pouvez également remplacer le TextChanged événement:
private void textBox1_TextChanged(object sender, EventArgs e)
{
string text = (sender as TextBox).Text;
StringBuilder builder = new StringBuilder(String.Empty);
foreach (char character in text)
{
if (Char.IsDigit(character))
{
builder.Append(character);
}
}
(sender as TextBox).Text = builder.ToString();
}
S'il vous plaît noter que vous devez ajouter dans le code pour définir la position de caret.
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back)
e.Handled = True;
}
Un format légèrement plus propre de ce qui précède:
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back));
}
J'ai trouvé ce qui suit a bien fonctionné. Il comprenait des exceptions supplémentaires pour permettre backspace, les touches fléchées supprimer la clé, etc. Comment autoriser uniquement numérique (0-9) en HTML inputbox en utilisant jQuery?
private void txt_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsDigit(e.KeyChar) || e.KeyChar == '\b')
{
// Allow Digits and BackSpace char
}
else
{
e.Handled = true;
}
}
Reportez-vous aussi Lien: Masking Textbox accepter seulement décimales décimales / 12209854 # 12209854
Vous pouvez utiliser ce qui suit sur l'événement clé de presse:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true;
}