Vb.net 使用多个控件调用控件事件处理程序
我想从该事件处理程序(在按钮单击处理程序中)中检查控件验证。但由于它需要sender和e参数,所以无法工作。我怎么做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
因为控件的数量比我在这里写的要多(不仅仅是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这是不可能的(除非你已经改变了设置)