繁体   English   中英

TextBox仅接受数字和逗号-C#Windows窗体

[英]TextBox Only Accepts Numeric and Comma- C# Windows Forms

我想限制只接受数字和逗号的文本框。我该怎么做?

例:

 1,2,223,222 -->Valid
 1,,22,,33   -->Invalid
 ab,c,d      -->Invalid

如果要验证输入,可以使用正则表达式

  String input = "1,2,223,222";
  String pattern = "^[0-9]+(,[0-9]+)*$";

  Console.Write(Regex.IsMatch(input, pattern) ? "valid" : "invalid");

小测试:

   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));

如果您想限制输入,请三思 :用户输入正确的程序是什么,说

  1,2 

有输入限制,这不可能是自然不言而喻的

  "1" -> "1," (invalid! System prevents such an input) -> "1,2"

很奇怪

  "1" -> "12" -> "1,2"

所以我建议宽松的用户输入控件:

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;
}

然后,最后(在OK单击等)进行验证。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM