Ich möchte Textbox, die nur Zahlen und Komma akzeptieren sollte einschränken.Wie kann ich diesen Tastendruck ??TextBox akzeptiert nur numerische und Comm-C# Windows Forms
Beispiel:
1,2,223,222 -->Valid
1,,22,,33 -->Invalid
ab,c,d -->Invalid
Ich möchte Textbox, die nur Zahlen und Komma akzeptieren sollte einschränken.Wie kann ich diesen Tastendruck ??TextBox akzeptiert nur numerische und Comm-C# Windows Forms
Beispiel:
1,2,223,222 -->Valid
1,,22,,33 -->Invalid
ab,c,d -->Invalid
Wenn Sie Eingabe überprüfen möchten, können Sie regulären Ausdruck verwenden:
String input = "1,2,223,222";
String pattern = "^[0-9]+(,[0-9]+)*$";
Console.Write(Regex.IsMatch(input, pattern) ? "valid" : "invalid");
Kleiner Test:
String[] tests = new String[] {
"1,2,223,222",
"1,,22,,33",
"ab,c,d",
};
var report = tests
.Select(item => String.Format("{0,-12} --> {1}",
item,
Regex.IsMatch(item, pattern) ? "valid" : "invalid"));
// 1,2,223,222 --> valid
// 1,,22,,33 --> invalid
// ab,c,d --> invalid
Console.Write(String.Join(Environment.NewLine, report));
Falls Sie möchte beschränken Eingang, bitte, denkt zweimal: was die richtige Vorgehensweise ist für Benutzer zur Eingabe, sagt
1,2
mit Aufnahmebeschränkung nicht natürliche und selbstverständlich sein kann ein
"1" -> "1," (invalid! System prevents such an input) -> "1,2"
aber seltsam
"1" -> "12" -> "1,2"
So
Ich schlage vor, nachsichtig Benutzereingabesteuerung:
private void myControl_KeyPress(object sender, KeyPressEventArgs e) {
// temporary invalid inputs like "1," are allowed
if ((e.KeyChar < 32) || (e.KeyChar >= '0') && (e.KeyChar <= '9') || (e.KeyChar == ','))
return;
// only evident errors (like 'A' or '&') are restricted
e.Handled = true;
}
und dann schließlich (auf OK
klicken etc.) Validieren.
Dmitry Bychenko .. Nur ein Problem mit dieser Lösung ist es wird nicht mit Folgekommas (zB; 1, , 2) – vmb
@vmb: die Frage besagt, dass * folgende Kommas * ungültig sind *: '1,, 22,, 33 -> Ungültig (das zweite Beispiel aus der Frage). Wenn diese Eingaben tatsächlich gültig sind, bearbeiten Sie die Frage bitte. –
@vmb: Für den Fall, dass Sie folgende Kommas * innerhalb * der Eingabe wie '1 ,,, 2' erlauben, aber nicht * dangling * (zB', 1' oder '2,') akzeptieren, dann kann das Muster ''^[0-9] | ([0-9] (, | [0-9]) * [0-9]) $ "' –
Lesen Sie über [MaskedTextBox] (https://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox (v = vs.110) .aspx) –
Wenn Sie * validate * Eingabe, kann das Muster sein "" [0-9] + (, [0-9] +) * $ "' –