我的表单中有两个文本框txtLastName和txtFirstName以及一个ErrorProvider控件。如果用户没有在两个文本框中输入值,则在事件发生后将出现错误图标。当用户在txtLastName中放置一个值而没有在txtFirstName中放置任何值时,就可以了。但是,错误图标仍在显示。

Public Sub New()
InitializeComponent()
AddTags()
AddHandler txtLastName.Validating, AddressOf RequiredUnless
AddHandler txtFirstName.Validating, AddressOf RequiredUnless
End Sub
Sub AddTags()
txtLastName.Tag = txtFirstName
txtFirstName.Tag = txtLastName
End Sub
Public Sub RequiredUnless(sender As Object, e As EventArgs)
Dim ctrl As BaseEdit = TryCast(sender, BaseEdit)
Dim ctrl2 As BaseEdit = ctrl.Tag
Dim ErrProvider As New ErrorProvider
If ctrl.Text = "" And ctrl2.Text = "" Then
ErrProvider.SetError(ctrl, "This field cannot be empty")
Else
ErrProvider.SetError(ctrl, "")
End If
End Sub发布于 2018-03-09 04:05:50
您不应该在该代码中创建ErrorProvider。你没有保留对它的任何参考,所以你怎么能清除它?下次引发事件时,您将创建一个新事件并“清除”该事件,但这对前一个事件没有任何影响。您应该在设计器中添加一个ErrorProvider,并始终引用它。
https://stackoverflow.com/questions/49186420
复制相似问题