【问题标题】:C# Validating input for textbox on winformsC#验证winforms上文本框的输入
【发布时间】:2012-01-18 18:12:33
【问题描述】:

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

【问题讨论】:

  • 我能否建议您开始从 WinForms 迁移到更现代的平台

标签: c# winforms validation


【解决方案1】:

说明

有很多方法可以验证您的 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#

更多信息

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 但请注意:ErrorProvider 组件不提供对可访问性客户端的内置支持。要使您的应用程序在使用此组件时可访问,您必须提供额外的、可访问的反馈机制。 (msdn.microsoft.com/en-us/library/…)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-14
    • 1970-01-01
    • 2016-03-13
    • 2015-11-09
    相关资源
    最近更新 更多