需要通过动态创建的事件处理程序传递对象
Need to pass object through dynamically created event handler
需要通过 vb.net 应用程序中动态创建的事件处理程序传递对象,(newperson 是一个用户控件)。事件处理程序:
AddHandler newperson.MouseUp, AddressOf newperson_MouseUp
然后我使用这个处理程序如下,
Private Sub newperson_MouseUp()
End sub
但我需要在这个子目录中提及新人,例如
newperson.Background = Brushes.Black
任何意见或想法将不胜感激:)。
你需要三样东西:
自定义 EventArgs class 存储对 newPerson 对象的引用
Public Class MyMouseUpEventArgs
Inherits MouseEventArgs
Public Sub New(newPerson As Person, b As MouseButtons, clicks As Integer, x As Integer, y As Integer, Delta As Integer)
MyBase.New(b, clicks, x, y, Delta)
Me.newPerson = newPerson
End Sub
Public Property newPerson As Person
End Class
它继承自 MouseEventArgs,也有默认的事件参数,但这不是必须的。
在您的自定义控件中,您需要处理原始的 MouseUp 事件。在此处理程序中,您只需引发一个新的自定义事件,我将其称为 MyMouseUp。此自定义事件将先前创建的 MyMouseEventArgs 和新人
作为参数
Public Class Person
Inherits UserControl
Public Shared Event MyMouseUp(sender As Object, e As MyMouseUpEventArgs)
Public Sub New()
AddHandler Me.MouseUp, AddressOf OnMouseUp
End Sub
Private Overloads Sub OnMouseUp(sender As Object, e As MouseEventArgs)
RaiseEvent MyMouseUp(sender, New MyMouseUpEventArgs(Me, e.Button, e.Clicks, e.X, e.Y, e.Delta))
End Sub
End Class
必须共享自定义事件才能在处理程序中使用它 class 而无需步骤
中显示的对象引用
处理程序(这里只是主窗体)现在使用自定义事件参数注册到新的自定义事件。这样你就可以访问 newPerson.
Public Class Form1
Public Sub New()
InitializeComponent()
AddHandler Person.MyMouseUp, AddressOf OnyMyMouseUp
End Sub
Private Overloads Sub OnyMyMouseUp(sender As Object, e As MyMouseUpEventArgs)
'Do stuff
e.newPerson.BackColor = Color.Aqua
End Sub
End Class
希望对您有所帮助。代码未经测试,因此不提供任何保证;)
需要通过 vb.net 应用程序中动态创建的事件处理程序传递对象,(newperson 是一个用户控件)。事件处理程序:
AddHandler newperson.MouseUp, AddressOf newperson_MouseUp
然后我使用这个处理程序如下,
Private Sub newperson_MouseUp()
End sub
但我需要在这个子目录中提及新人,例如
newperson.Background = Brushes.Black
任何意见或想法将不胜感激:)。
你需要三样东西:
自定义 EventArgs class 存储对 newPerson 对象的引用
Public Class MyMouseUpEventArgs Inherits MouseEventArgs Public Sub New(newPerson As Person, b As MouseButtons, clicks As Integer, x As Integer, y As Integer, Delta As Integer) MyBase.New(b, clicks, x, y, Delta) Me.newPerson = newPerson End Sub Public Property newPerson As Person End Class
它继承自 MouseEventArgs,也有默认的事件参数,但这不是必须的。
在您的自定义控件中,您需要处理原始的 MouseUp 事件。在此处理程序中,您只需引发一个新的自定义事件,我将其称为 MyMouseUp。此自定义事件将先前创建的 MyMouseEventArgs 和新人
作为参数Public Class Person Inherits UserControl Public Shared Event MyMouseUp(sender As Object, e As MyMouseUpEventArgs) Public Sub New() AddHandler Me.MouseUp, AddressOf OnMouseUp End Sub Private Overloads Sub OnMouseUp(sender As Object, e As MouseEventArgs) RaiseEvent MyMouseUp(sender, New MyMouseUpEventArgs(Me, e.Button, e.Clicks, e.X, e.Y, e.Delta)) End Sub End Class
必须共享自定义事件才能在处理程序中使用它 class 而无需步骤
中显示的对象引用
处理程序(这里只是主窗体)现在使用自定义事件参数注册到新的自定义事件。这样你就可以访问 newPerson.
Public Class Form1 Public Sub New() InitializeComponent() AddHandler Person.MyMouseUp, AddressOf OnyMyMouseUp End Sub Private Overloads Sub OnyMyMouseUp(sender As Object, e As MyMouseUpEventArgs) 'Do stuff e.newPerson.BackColor = Color.Aqua End Sub End Class
希望对您有所帮助。代码未经测试,因此不提供任何保证;)