【问题标题】:Textbox without special chars没有特殊字符的文本框
【发布时间】:2016-01-12 20:46:50
【问题描述】:

我希望我的文本框从不接受特殊字符。 只接受空格、数字和字母。 我为 Presskey 事件找到了这段代码:

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

但是当有人在文本框中粘贴一些东西时它不起作用。如何使 textChanged 事件等效?

我尝试用此函数替换“”的不被接受的字符,但它不起作用。当我粘贴时它显示任何字符,并且由于某种原因它删除了默认的初始文本“text1”:

 private void rsNameTextBox_TextChanged(object sender, EventArgs e)
        {
            Regex reg = new Regex(@"^[\s\dA-Za-z]+$");
            rsNameTextBox.Text = reg.Replace(rsNameTextBox.Text,"");
        }

【问题讨论】:

  • 查看这个答案:stackoverflow.com/questions/3061475/…。请注意,如果您尝试使用 PreviewTextInput 命令检查数据,您会发现空格、退格和删除不会导致事件 - 您需要使用 PreviewKeyDown 事件进行检查。
  • 注意 - 要忽略粘贴的输入,您需要调用 e.CancelCommand();

标签: c# regex winforms textbox


【解决方案1】:

为什么你不使用TextBox 你的ShortcutsEnabled 属性 想要防止剪切、复制和粘贴功能。

然后你可以在rsNameTextBox_KeyPress中使用你的代码

Here是链接,如何防止窗口窗体应用程序中的粘贴功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多