C#验证winforms上文本框的输入

时间:2012-01-18 18:12:33

标签: c# winforms validation

我想在将数据保存到数据库之前检查用户在文本框中写的内容。做这个的最好方式是什么?我想我总是可以写一些ifs或一些try-catch块,但我想知道是否有更好的方法。我已经阅读了有关验证事件的内容,但我不确定如何使用它们。

2 个答案:

答案 0 :(得分:46)

描述

有许多方法可以验证TextBox。您可以在每次击键,稍后或Validating事件时执行此操作。

如果TextBox失去焦点,则会触发Validating事件。例如,当用户单击其他Control时。如果您的设置e.Cancel = true TextBox没有失去焦点。

  

MSDN - Control.Validating事件使用键盘(TAB,SHIFT + TAB等)更改焦点时,通过调用Select或SelectNextControl方法或设置ContainerControl .ActiveControl属性为当前表单,焦点事件按以下顺序发生

     

输入

     

的GotFocus

     

离开

     

验证

     

验证

     

引发LostFocus

     

使用鼠标或通过调用Focus方法更改焦点时,焦点事件按以下顺序发生:

     

输入

     

的GotFocus

     

引发LostFocus

     

离开

     

验证

     

验证

示例验证事件

private void textBox1_Validating(object sender, CancelEventArgs e)
{
    if (textBox1.Text != "something")
        e.Cancel = true;
}

更新

您可以使用ErrorProvider可视化您的TextBox无效。 查看Using Error Provider Control in Windows Forms and C#

更多信息

答案 1 :(得分:9)

使用WinForms,您可以将ErrorProvider与Validating事件结合使用来处理用户输入的验证。 Validating事件提供了执行验证的钩子,ErrorProvider提供了一种很好的一致方法,可以为用户提供有关任何错误条件的反馈。

http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx