当用户点击“X”图标关闭应用程序或用户点击关闭应用程序的应用程序中的按钮时,是否有一种简单的方法可以禁用所有表单验证?
我发现了这个但它在C#中。你能把它转换成VB.Net编码吗?
答案 0 :(得分:5)
发现它!
我把这段代码放在按钮点击处理程序中:
' Disable validation on the form.
'--------------------------------
Me.AutoValidate = System.Windows.Forms.AutoValidate.Disable
当我再次调用表单时,我将其用于名为objFormParents的表单对象:
' Reset validation on this form because the user may have closed it before.
'--------------------------------------------------------------------------
objFormParents.CausesValidation = True
我在互联网上发现了这个,点击“X”图标:
' This will allow the user to close the form without the worry of controls doing validation from "X".
'----------------------------------------------------------------------------------------------------
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
Select Case ((m.WParam.ToInt64() And &HFFFF) And &HFFF0)
Case &HF060 ' The user chose to close the form.
Me.AutoValidate = System.Windows.Forms.AutoValidate.Disable
End Select
MyBase.WndProc(m)
End Sub
答案 1 :(得分:1)
我找到了另一种实现此解决方案的方法
首先声明一个公共属性
Private bFormClosing As Boolean = False
然后在验证代码中包含此布尔值,并使用AND
. . . And bFormClosing = False then
在这里使用
ErrorProvider.SetError("My Error Message")
e.Cancel = True
Else
e.Cancel = False
您为所有验证控件事件执行此操作,然后在验证事件之前触发的Exit_Button
的Enter事件中,设置bClosingForm = true
然后它触发级联事件并转到验证事件以执行AND bFormClosing
,并且如果您拥有else
将跳转到e.Cancel = false
并且将禁用验证并允许您可以关闭验证事件的所有控件的形式。
请记住将退出按钮的CausesValidation
= false设置为false。
此外,您可以将它放在鼠标按下或ClosingForm事件,即在验证事件之前触发的任何事件。 Hurray终于为我工作了!
答案 2 :(得分:1)
你可以做得更简单。
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.WParam.ToInt32 = &HF060 Then Me.AutoValidate = System.Windows.Forms.AutoValidate.Disable
MyBase.WndProc(m)
End Sub