在VB.Net中,我正在编写程序,但我不知道如何将Click事件处理程序作为参数传递给另一个子,以及如何从那里调用它。我可以这样做吗?如果是,怎么办?
例如:我有以下代码。在两种形式上,我有1个ListView和1个按钮。如果按下按钮,它将调用按钮的click事件。另外,如果我在ListView中按CTRL + P,它将调用同一事件。我在两种形式上都做得到。
在form1上:
Private Sub MyPrintButton1_Click(sender As Object, e As EventArgs) Handles MyPrintButton1.Click
' Print MyListView1 data...
End Sub
Private Sub MyListView1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyListView1.KeyUp
' CTRL+P = Print
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.P Then
e.Handled = True
MyPrintButton1_Click(sender, e)
End If
End Sub
在form2上:
Private Sub MyPrintButton2_Click(sender As Object, e As EventArgs) Handles MyPrintButton2.Click
' Print MyListView2 data...
End Sub
Private Sub MyListView2_KeyUp(sender As Object, e As KeyEventArgs) Handles MyListView2.KeyUp
' CTRL+P = Print
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.P Then
e.Handled = True
MyPrintButton2_Click(sender, e)
End If
End Sub
我只想在一个不同的(公用)文件中创建一个子,并希望通过传递变量sender&e和两个Click事件的事件处理程序来调用它。
在这种情况下,两个KeyUp事件将是相同的,只是传递的事件的名称将不同:
在form1上:
Private Sub MyListView1_KeyUp(sender As Object, e As KeyEventArgs) Handles MyListView1.KeyUp
' Handle
AllListViews_KeyUp(sender, e, AddressOf MyPrintButton1_Click)
End Sub
在form2上:
Private Sub MyListView2_KeyUp(sender As Object, e As KeyEventArgs) Handles MyListView2.KeyUp
' Handle
AllListViews_KeyUp(sender, e, AddressOf MyPrintButton2_Click)
End Sub
公共子将类似于这样:
Public Sub AllListViews_KeyUp(sender As Object, e As KeyEventArgs, PassedPrintButton_Click As ???? Of(????))
' CTRL+P = Print
If e.Modifiers = Keys.Control AndAlso e.KeyCode = Keys.P Then
e.Handled = True
PassedPrintButton_Click(sender2, e2 ????)
End If
End Sub
因此:我如何需要将事件作为参数传递以及如何调用事件?当我调用PassedPrintButton_Click事件时,如何传递其自己的发送者和e参数(sender2,e2)?以及如何以及在哪里可以声明它们?)
然后,当我传递MyPrintButton1_Click和addressMyPrintButton2_Click的地址时,子程序将从哪里知道点击事件的发送者和e参数?
谢谢。