验证WinForm中的数据

Jon*_*ter 4 .net c# winforms

我在WinForms应用程序中创建了一个对话框.这有许多文本框和确定/取消按钮.当用户单击"确定"时,如果所有条目都有效,我只希望关闭对话框.我可以分别使用每个控件的"Validating"事件来了解如何执行此操作.那样就好.但是当控件失去焦点时,这些似乎只会触发.但是,对话框中的空文本框也是无效输入,这意味着用户可能永远不会专注于该控件.我更愿意在单击OK时验证所有控件.

我不知道如何做到这一点.覆盖OK按钮的onclick似乎没有停止关闭窗口的选项.Form IsClosing事件通过设置Cancel = true来完成.但这似乎无法区分是否单击了"确定"或"取消"按钮.显然,如果单击取消按钮,我不关心验证,并希望允许表单关闭.

这样做的最佳方法是什么?]

更新:我已经在我的表单和确定按钮上将CausesValidation设置为true,但是当我单击确定按钮时,我的验证事件不会被触发.我提到这个,因为它被建议作为下面的解决方案.

Mar*_*hal 5

请选择表格>将属性设置CausesValidationtrue

选择确定按钮并再次将属性设置CausesValidationtrue

然后它会处理所有验证.

重点:1)您必须e.Cancel=true在所有验证事件处理程序中提及

2)如果您的按钮在面板中,则必须将面板(或任何父控件)CausesValidation属性设置为true

编辑:

3)在失去焦点之前验证火灾.按Enter键将导致默认按钮单击,它不会将焦点移动到该按钮,因此如果您将表单AcceptButton属性设置为OK按钮,则不会触发验证事件按钮