Vb.net 如何将所有验证事件移动到自定义类?

Vb.net 如何将所有验证事件移动到自定义类?,vb.net,class,validation,Vb.net,Class,Validation,我是编程新手,所以这可能是一个有点奇怪的问题 我有一个带有两个文本框的简单表单。我需要验证用户输入,因此我为此文本框创建了验证事件 Private Sub txtTest_Validating(sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTest.Validating ValidateInputMinMax(CType(sender, Control), e) End Sub

我是编程新手,所以这可能是一个有点奇怪的问题

我有一个带有两个文本框的简单表单。我需要验证用户输入,因此我为此文本框创建了验证事件

Private Sub txtTest_Validating(sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTest.Validating
    ValidateInputMinMax(CType(sender, Control), e)
End Sub
从这个事件处理程序中,我调用私有子ValidateInputMinMax,在这里我使用

ErrorProvider.SetError

基于一些验证标准。我有两个这样的处理程序和私有子类,我想从表单类转移到新的自定义类。 这能做到吗

我尝试将所有这些复制到自定义类并用事件声明:

Dim WithEvents txtTest as TextBox
现在我被卡住了。我走对了吗?

像这样

Private Sub txtTest_Validating(sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTest.Validating
    ValidateInputMinMax((CType(sender), Textbox),e)
End Sub
像这样

Private Sub txtTest_Validating(sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTest.Validating
    ValidateInputMinMax((CType(sender), Textbox),e)
End Sub

您需要使用委托

Public Class Form1

  Friend WithEvents exampleControl1 As New ExampleControl


  Private Sub exampleControl1_Events(ByVal eventNumber As Integer) Handles_
 exampleControl1.Event1


  End Sub


End Class

Public Class ExampleControl
  Inherits System.Windows.Forms.UserControl

  Public Event Event1(ByVal eventNumber As Integer)

  Private Sub ExampleMethod()

    RaiseEvent Event1(1)

  End Sub

End Class


您需要使用代理

Public Class Form1

  Friend WithEvents exampleControl1 As New ExampleControl


  Private Sub exampleControl1_Events(ByVal eventNumber As Integer) Handles_
 exampleControl1.Event1


  End Sub


End Class

Public Class ExampleControl
  Inherits System.Windows.Forms.UserControl

  Public Event Event1(ByVal eventNumber As Integer)

  Private Sub ExampleMethod()

    RaiseEvent Event1(1)

  End Sub

End Class


对不起,我不明白这一点。我忘记告诉您,当我将此验证事件从Form1类中移动时,不会触发它。此处理程序仅在Form1类中工作。。除非您添加处理..的控件。。例如,子测试_valid(..)处理txtBox2.Validating,form2.txtBox1.ValidatingSorry,但我不理解这一点。我忘记告诉您,当我将此验证事件从Form1类中移动时,不会触发它。此处理程序仅在Form1类中工作。。除非您添加处理..的控件。。例如子测试_valid(..)处理txtBox2.Validating,form2.txtBox1.ValidatingYvette非常感谢。我会努力让它工作。我将报告我的进展情况。祝你胃口好,伊维特,非常感谢。我会努力让它工作。我将报告我的进展情况。祝你胃口好。