0

当我创建自定义处理程序时:

Public Class MyCustomClass
    Public Sub AddHandlers()
        AddHandler Form1.MouseMove, AddressOf MoveMouse
    End Sub
    Private Sub MoveMouse(sender As Object, e As MouseEventArgs)
        MsgBox("Needs to happen first.")
    End Sub
End Class

当用户将鼠标移到 Form1 上时,我需要此类中的 MoveMouse 在任何其他事件之前触发。

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
    MsgBox("Needs to happen second.")
End Sub

在写这篇文章时,我意识到我可以在 Form1 的类中创建另一个自定义事件处理程序,但是有没有其他方法可以确保 MoveMouse(无论它在哪个类中)在 Form1_MouseMove 之前发生?

谢谢 -~尼克

4

1 回答 1

0

事件按照声​​明的顺序触发:

因此,如果您希望您的自定义类MouseMove在 Form1 引发事件之前在 Form1 上引发,您需要让您的自定义类首先添加处理程序:

Public Class CustomClass
    Public Sub OnMouseMoved(sender As Object, e As MouseEventArgs)
        Console.WriteLine("Custom mouse moved")
    End Sub
End Class

Public Class Form1
    Public Custom As CustomClass
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Custom = New CustomClass
        AddHandler MouseMove, AddressOf Custom.OnMouseMoved
        AddHandler MouseMove, AddressOf OnMouseMoved
 End Sub

    Private Sub OnMouseMoved(sender As Object, e As MouseEventArgs)
        Console.WriteLine("Form1 mouse moved")
    End Sub
End Class
于 2017-07-15T02:47:09.453 回答