【问题标题】:C# - Textbox with only letters and numbersC# - 只有字母和数字的文本框
【发布时间】:2013-11-26 17:07:14
【问题描述】:

如何限制我的文本框只接受数字和字母? 它甚至不应该允许空格或诸如“!”、“?”、“/”之类的东西。 只有 a-z、A-Z、0-9

试过了,还是不行

if (System.Text.RegularExpressions.Regex.IsMatch(@"^[a-zA-Z0-9\_]+", txtTag.Text))
{
    txtTag.Text.Remove(txtTag.Text.Length - 1);
}

甚至不确定 txtTag.Text.Remove(txtTag.Text.Length - 1); 是否应该存在,因为它会使应用程序崩溃。

【问题讨论】:

  • 你必须处理按键事件。如果这样做,文本框中不会出现错误的字符。

标签: c# regex winforms textbox


【解决方案1】:

您不需要正则表达式:

        textBox1.Text = string.Concat(textBox1.Text.Where(char.IsLetterOrDigit));

这将删除所有不是字母或数字的内容,并且可以放置在 TextChanged 事件中。基本上,它获取文本,将其拆分为字符,然后只选择字母或数字。之后,我们可以将它连接回一个字符串。

另外,如果您想将插入符号放在文本框的末尾(因为更改文本会将其位置重置为 0),您还可以添加 textBox1.SelectionStart = textBox1.Text.Length + 1;

【讨论】:

  • 谢谢你,完美!现在我只需要弄清楚右键单击和 ctrl+v 部分:)
  • 感谢您节省我的时间对我来说很好
【解决方案2】:

试试这个

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        e.Handled = !char.IsLetter(e.KeyChar) && !char.IsControl(e.KeyChar)
             && !char.IsSeparator(e.KeyChar) && !char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar);
    }

【讨论】:

    【解决方案3】:

    我的想法是您可以更改该控件的 KeyPressed 或 TextChanged 事件,以检查输入的字符是数字还是字母。例如,要检查添加到文本框中的字符,您可以执行以下操作:

    myTextbox.KeyPress += new KeyPressEventHandler(myTextbox_KeyPress);
    
    
    
    void myTextbox_KeyPress(object sender, KeyPressEventArgs e)
    {
        if(e.KeyChar >= Keys.A && e.KeyChar <= Keys.Z)
    
        // you can then modify the text box text here
    

    【讨论】:

      【解决方案4】:

      首先,查看this article 了解一些信息。

      我认为你应该在客户端做的是在相应的HTML中添加pattern属性。

      &lt;input type="text" name="foo" pattern="[a-zA-Z0-9_]" title="Please input only letters and numbers"&gt;

      【讨论】:

      • 问题是关于 WinForms,而不是 web/html
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-24
      • 2022-09-27
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 2011-04-21
      相关资源
      最近更新 更多