nur ein Textfeld für Zahlen Maskierung aber wird nicht akzeptieren Back Space
Frage
Ich habe eine Textbox, die ich für nur Zahlen möchte. Aber wenn ich die falsche Nummer getroffen, kippe ich Backspace es zu korrigieren. Wie kann ich erlaube Rückschritte zu arbeiten. Dank
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (Char.IsNumber(e.KeyChar) != true)
{
e.Handled = true;
}
}
Lösung
Sie können einen Scheck in den Steuerzeichen erlauben auch:
if (Char.IsControl(e.KeyChar) != true && Char.IsNumber(e.KeyChar) != true)
{
e.Handled = true;
}
Update: als Reaktion auf Person-b Kommentar auf dem Code s / er schlägt vor, den folgenden Stil (was auch ist, wie ich dies persönlich schreiben):
if (!Char.IsControl(e.KeyChar) && !Char.IsNumber(e.KeyChar))
{
e.Handled = true;
}
Andere Tipps
Die richtige Antwort lautet:
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !сhar.IsNumber(e.KeyChar) && (e.KeyChar != '\b');
}
Sie können auch das Textchanged-Ereignis außer Kraft setzen:
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();
}
Bitte beachten Sie, dass Sie in Code würde hinzufügen, um die Position der Einfügemarke zu setzen.
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsNumber(e.KeyChar) && e.KeyCode != Keys.Back)
e.Handled = True;
}
Ein etwas sauberes Format der oben:
private void amount_PaidTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = !(Char.IsNumber(e.KeyChar) || (e.KeyChar==Keys.Back));
}
Ich fand auch die folgenden gearbeitet. Es umfasste zusätzliche Ausnahmen für das Erlauben Backspace, Pfeiltasten Löschtaste usw. Wie nur erlauben, numerisch (0-9) in HTML inputbox mit 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;
}
}
Siehe auch Link: Masking Textbox nur Dezimalzahlen Dezimalstellen akzeptieren / 12209854 # 12209854
Sie können die folgenden auf Tastendruck-Ereignis verwenden:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!Char.IsDigit(e.KeyChar) & (e.KeyChar != 8)) e.Handled = true;
}