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

时间:2011-04-28 13:39:58

标签: c# .net winforms textbox validation

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

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

2 个答案:

答案 0 :(得分:17)

与其为我编写代码,以下是完成此类专长所需的基本步骤:

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

  2. 使用Char.IsSymbol method之类的内容来验证他们输入的字符是否允许。请务必明确检查下划线,因为您希望将其作为其他符号的特例。

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

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

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

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

      An example of a balloon-style tooltip, displaying an error message.

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

      An example of an ErrorProvider control, set on a text box.

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

答案 1 :(得分:0)

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