【发布时间】:2012-01-18 18:12:33
【问题描述】:
我想在将用户保存到数据库之前检查用户在文本框中写入的内容。做这个的最好方式是什么?我想我总是可以写一些 ifs 或一些 try-catch 块,但我想知道是否有更好的方法。我读过一些关于验证事件的内容,但我不确定如何使用它们。
【问题讨论】:
-
我能否建议您开始从 WinForms 迁移到更现代的平台
标签: c# winforms validation
我想在将用户保存到数据库之前检查用户在文本框中写入的内容。做这个的最好方式是什么?我想我总是可以写一些 ifs 或一些 try-catch 块,但我想知道是否有更好的方法。我读过一些关于验证事件的内容,但我不确定如何使用它们。
【问题讨论】:
标签: c# winforms validation
有很多方法可以验证您的 TextBox。您可以在每次击键、稍后或Validating 事件时执行此操作。
如果您的 TextBox 失去焦点,Validating 事件将被触发。例如,当用户单击其他控件时。如果您设置的e.Cancel = true 文本框不会失去焦点。
MSDN - Control.Validating 事件 当您使用键盘(TAB、SHIFT+TAB 等)、调用 Select 或 SelectNextControl 方法或设置 ContainerControl 更改焦点时.ActiveControl 属性为当前窗体,焦点事件按以下顺序发生
输入
获得焦点
离开
验证
已验证
失焦
当您使用鼠标或调用 Focus 方法更改焦点时,焦点事件按以下顺序发生:
输入
获得焦点
失焦
离开
验证
已验证
private void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text != "something")
e.Cancel = true;
}
您可以使用ErrorProvider 来显示您的文本框无效。
查看Using Error Provider Control in Windows Forms and C#
【讨论】:
使用 WinForms,您可以将 ErrorProvider 与 Validating 事件结合使用来处理用户输入的验证。 Validating 事件提供了执行验证的钩子,而 ErrorProvider 提供了一种很好的一致方法来向用户提供有关任何错误情况的反馈。
http://msdn.microsoft.com/en-us/library/system.windows.forms.errorprovider.aspx
【讨论】: