如何validation用户键入WinForms文本框的字符?

在文本框中输入名称时,我应该编写什么代码来防止除“_”(下划线)之外的任何特殊字符?

如果存在此类字符,则应显示弹出消息。

而不是我为你编写代码,这是完成这样一个壮举所需的基本步骤:

  1. 处理TextBox控件的KeyDown事件。

  2. 使用类似Char.IsSymbol方法的方法来validation他们输入的字符是否被允许。 请确保明确检查下划线,因为您希望将其作为其他符号的特例。

  3. 如果输入有效字符,则不执行任何操作。 WinForms将负责将其插入文本框。

    但是,如果键入了无效字符,则需要向用户显示一条消息,通知他们文本框不接受该字符。 这里有几件事要做:

    1. e.SuppressKeyPress属性设置为True。 这样可以防止角色出现在文本框中。

    2. 在文本框上显示工具提示窗口,指示文本框不接受用户键入的字符,并通知他们哪些字符视为有效输入。
      最简单的方法是使用ToolTip类 。 在设计时将此控件添加到窗体,并在适当时使用Show方法的一个重载显示它。
      特别是,您将需要使用其中一个重载,允许您指定IWin32Window以将工具提示与(这是您的文本框控件)相关联。

      气球样式工具提示的示例,显示错误消息。

      或者,您可以在文本框控件旁边显示一个小错误图标,而不是工具提示,通知用户他们的上一次输入无效。 使用ErrorProvider控件很容易实现。 在设计时将其添加到表单中,就像工具提示控件一样,并在运行时调用SetError方法以显示错误消息。

      在文本框上设置的ErrorProvider控件的示例。

      无论你做什么,都不要显示消息框! 这会扰乱用户尝试键入内容,并且很可能他们会通过输入他们想要键入的下一个字母而无意中将其解除。

TextBoxKeyDown事件中添加一个处理程序。 你可以检查那里按下了哪个键,并用它做任何你想做的事情,包括弹出一个消息框。