【问题标题】:What is the right method of validating .NET Windows Forms?验证 .NET Windows 窗体的正确方法是什么?
【发布时间】:2011-06-05 22:24:39
【问题描述】:

我到处搜索,但找不到关于这个主题的好例子或文字。

例如,当用户在对话框中按下“确定”按钮时,我想检查用户名和密码的有效性。

我应该在关闭事件中执行此操作,并在验证失败时取消对话框关闭吗?或者将DialogResult 设置为none 而不是OK。这些似乎都是错误的做法。我还看到了Validated 和Validating 事件,但不是仅用于验证单个控件的有效输入吗?

如何在按下确定按钮时同时检查多个控件,并取消表单关闭?

【问题讨论】:

    标签: c# .net windows winforms


    【解决方案1】:

    每个控件都提供Validating 事件。在这种情况下,您可以实现单个控​​件的验证。默认情况下,当控件失去焦点时会触发此验证。与Validated 事件相反,此事件的处理程序接收CancelEventArgs,因此如果验证失败,您可以取消当前操作(失去焦点)。

    当您想要处理复杂的验证时,您可以将表单的AutoValidate 属性设置为AutoValidate.Disable。这将禁用隐式验证(之前描述的默认行为)。相反,您必须调用 ValidateChildren 来触发对所有子控件的显式验证。

    【讨论】:

      【解决方案2】:

      这取决于你想要做什么。如果您想验证用户输入的内容可能是有效的用户名/密码,您可以使用验证事件(例如,确保它足够长等)。如果您想验证用户名/密码是否对应于有效帐户,那么您必须等到他们点击 OK 按钮并检查凭据。如果它们不好,那么您可以抛出一个消息框(或其他)并阻止对话框关闭(DialogResult.None)。

      【讨论】:

      • 基本上这就是我想要做的,DialogResult.None 也可以,但不确定这是否是正确的方法,因为它对我来说似乎不太可读 @ 987654322@ 某事的结果值实际上取消了对话框。但我想没有其他选择
      • +1:我再次阅读了这个问题,它是关于“业务验证”而不是“输入验证”,所以这是正确的答案。
      • 但是如果您的验证失败,您确实需要调用 Close 吗?
      • 不完全是,我想要一个模式弹出窗口,如果我按 OK 并且登录正确,我将关闭它并启用主框架,然后通过取消关闭应用程序。如果验证失败,我会显示错误消息并让用户重试
      猜你喜欢
      • 1970-01-01
      • 2012-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 2015-09-06
      • 1970-01-01
      相关资源
      最近更新 更多