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

lov*_*all -2 .net c# validation textbox winforms

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

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

Cod*_*ray 17

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

  1. 处理KeyDown事件以供您TextBox控制.

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

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

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

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

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

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

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

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

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

  • 非常好的答案.我喜欢这样一个事实:它解释了您需要整合的所有优秀设计,以使其成为良好的用户体验,尤其是有关消息框的建议. (4认同)