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

Vb.net 使用多个控件调用控件事件处理程序,vb.net,events,controls,handler,Vb.net,Events,Controls,Handler,我想从该事件处理程序(在按钮单击处理程序中)中检查控件验证。但由于它需要sender和e参数,所以无法工作。我怎么做 因为控件的数量比我在这里写的要多(不仅仅是FirstNameTextBox和LastNameTextBox),所以为每一个控件编写验证代码似乎不是一个好的解决方案。但由于它需要sender和e参数,所以无法工作。我怎么做 您应该做的第一件事是设置。您没有使用正确的方法签名。事件定义为: Private Sub NullValidation(sender As Object, e

我想从该事件处理程序(在按钮单击处理程序中)中检查控件验证。但由于它需要sender和e参数,所以无法工作。我怎么做


因为控件的数量比我在这里写的要多(不仅仅是FirstNameTextBox和LastNameTextBox),所以为每一个控件编写验证代码似乎不是一个好的解决方案。但由于它需要sender和e参数,所以无法工作。我怎么做

您应该做的第一件事是设置。您没有使用正确的方法签名。事件定义为:

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
的类型从
EventArgs
更改为
CancelEventArgs
。您可能需要导入名称空间
System.ComponentModel
。然后将
e.Cancel
设置为
True
,以指示验证未通过

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

你应该做的第一件事是设置。您没有使用正确的方法签名。事件定义为:

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
的类型从
EventArgs
更改为
CancelEventArgs
。您可能需要导入名称空间
System.ComponentModel
。然后将
e.Cancel
设置为
True
,以指示验证未通过

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

你应该做的第一件事是设置。您没有使用正确的方法签名。事件定义为:

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
的类型从
EventArgs
更改为
CancelEventArgs
。您可能需要导入名称空间
System.ComponentModel
。然后将
e.Cancel
设置为
True
,以指示验证未通过

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

你应该做的第一件事是设置。您没有使用正确的方法签名。事件定义为:

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
的类型从
EventArgs
更改为
CancelEventArgs
。您可能需要导入名称空间
System.ComponentModel
。然后将
e.Cancel
设置为
True
,以指示验证未通过

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


要使这成为一个好问题,您需要告诉我们什么不起作用,以及您遇到了什么错误。这样将它们组合在一起首先是有意义的,但前提是*您要检查的是它们是否为空。一旦你必须测试电子邮件、电话或邮政编码地址格式等,你就会有代码打破这些控件进行特殊测试,然后你的程序就会膨胀得可怕。要想让这成为一个好问题,你需要告诉我们什么不起作用,以及你会遇到什么错误。首先,将它们分组在一起是有意义的,但前提是你要检查的是它们是否为空。一旦你必须测试电子邮件、电话或邮政编码地址格式等,你就会有代码打破这些控件进行特殊测试,然后你的程序就会膨胀得可怕。要想让这成为一个好问题,你需要告诉我们什么不起作用,以及你会遇到什么错误。首先,将它们分组在一起是有意义的,但前提是你要检查的是它们是否为空。一旦你必须测试电子邮件、电话或邮政编码地址格式等,你就会有代码打破这些控件进行特殊测试,然后你的程序就会膨胀得可怕。要想让这成为一个好问题,你需要告诉我们什么不起作用,以及你会遇到什么错误。首先,将它们分组在一起是有意义的,但前提是你要检查的是它们是否为空。一旦你必须测试一封电子邮件、电话或邮政编码地址格式等,你将有代码打破这些控制进行特殊测试,然后你的程序膨胀得可怕。+1仅用于选项严格。。。我认为
(ctl不是什么)
更具可读性,特别是对于新手(或英语母语人士)而言,谢谢@puropoix!是的,使用
()
@n3verLieMe时可读性更高。当您单击文本控件时,
TextChanged
事件的默认语法将被创建,而不是
验证
——它们与Kringsja先生具有不同的事件签名describes@n3verLieMe没有办法(除非您更改了设置)你有严格的选择权。如果是这样,
sender.Text
将给您一个“延迟绑定”错误。您的主要问题是什么?这是你的主要问题。仅选项严格+1。。。我认为
(ctl不是什么)
更具可读性,特别是对于新手(或英语母语人士)而言,谢谢@puropoix!是的,使用
()
@n3verLieMe时可读性更高。当您单击文本控件时,
TextChanged
事件的默认语法将被创建,而不是
验证
——它们与Kringsja先生具有不同的事件签名describes@n3verLieMe没有办法(除非您更改了设置)你有严格的选择权。如果是这样,
sender.Text
将给您一个“延迟绑定”错误。您的主要问题是什么?这是你的主要问题。仅选项严格+1。。。我认为
(ctl不是什么)
更具可读性,特别是对于新手(或英语母语人士)而言,谢谢@puropoix!是的,使用
()
@n3verLieMe时可读性更高。当您单击文本控件时,
TextChanged
事件的默认语法将被创建,而不是
验证
——它们与Kringsja先生具有不同的事件签名describes@n3verLieMe没有办法(除非您更改了设置)你有严格的选择权。如果是这样,
sender.Text
将给您一个“延迟绑定”错误。您的主要问题是什么?这是你的主要问题。仅选项严格+1。。。我认为
(ctl不是什么)
更具可读性,特别是对于新手(或英语母语人士)而言,谢谢@puropoix!是的,使用
()
@n3verLieMe时可读性更高。当您单击文本控件时,
TextChanged
事件的默认语法将被创建,而不是
验证
——它们与Kringsja先生具有不同的事件签名describes@n3verLieMe这是不可能的(除非你已经改变了设置)