使用多个控件调用控件事件处理程序

时间:2014-10-04 12:09:30

标签: vb.net events controls handler

Private Sub NullValidation(sender As Object, e As EventArgs) Handles FirstNameTextBox.Validating,
             LastNameTextBox.Validating, FatherNameTextBox.Validating, 
    If String.IsNullOrWhiteSpace(sender.Text) Then
        ErrorProvider1.SetError(sender, "Text box is empty ")
    End If
End Sub

我想从此事件处理程序(在按钮单击处理程序中)检查我的控件验证。但是因为它需要发送者和e参数,所以它不会起作用。我该怎么做?

因为控件的数量超过了我在这里写的数量(不仅仅是FirstNameTextBox和LastNameTextBox),所以为每一个编写验证代码似乎都不是一个好的解决方案。但是因为它需要发送者和e参数,所以它不会起作用。我该怎么做?

1 个答案:

答案 0 :(得分:3)

首先应该设置option strict on。您没有使用正确的方法签名。 validating事件定义为:

Public Delegate Sub CancelEventHandler(ByVal sender As Object, ByVal e As CancelEventArgs)

e的类型从EventArgs更改为CancelEventArgs。您可能需要导入名称空间System.ComponentModel。然后将e.Cancel设置为True,表示验证未通过。

Private Sub NullValidation(sender As Object, e As CancelEventArgs) Handles FirstNameTextBox.Validating, LastNameTextBox.Validating, FatherNameTextBox.Validating
    Dim ctl As Control = TryCast(sender, Control)
    If ((Not ctl Is Nothing) AndAlso String.IsNullOrWhiteSpace(ctl.Text)) Then
        e.Cancel = True
        Me.ErrorProvider1.SetError(ctl, "Text box is empty ")
    End If
End Sub