我在我的 WinForms 应用程序中创建了一个对话框。这有许多文本框和确定/取消按钮。当用户单击“确定”时,我只想在所有条目都有效时关闭对话框。我可以看到如何分别使用每个控件的“验证”事件来执行此操作。那也行。但是这些似乎只有在控件失去焦点时才会触发。但是,我的对话框中的空文本框也是无效输入,这意味着用户可能永远不会关注该控件。我更愿意在单击“确定”时验证所有控件。
不过我不知道该怎么做。覆盖 OK 按钮的 onclick 似乎没有阻止窗口关闭的选项。 Form IsClosing 事件通过设置 Cancel = true 来完成。但这似乎无法区分点击的是确定按钮还是取消按钮。显然,如果单击取消按钮,我不关心验证,并且无论如何都希望允许表单关闭。
执行此操作的最佳方法是什么?]
更新: 我已经在我的表单和 ok 按钮上将 CausesValidation 设置为 true,但是当我单击 ok 按钮时我的验证事件没有被触发。我提到这个是因为它被建议作为下面的解决方案。
最佳答案
请选择表单 > 将属性 CausesValidation
设置为 true
选择“确定”按钮并再次将属性 CausesValidation
设置为 true
然后它将负责所有验证。
要点:
1) 您必须在所有验证事件处理程序中提及 e.Cancel=true
2) 如果您的按钮在面板中,那么您必须将面板(或任何父控件的)CausesValidation
属性设置为 true
编辑:
3) 在失去焦点之前验证点火。在按下 Enter 的同时 导致默认按钮点击,它不会将焦点移动到那个 按钮,因此如果您将表单的 AcceptButton 属性设置为确定按钮,则不会触发任何验证事件
关于c# - 在 WinForm 中验证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7109350/