更改处理鼠标事件的顺序

时间:2013-12-06 13:40:56

标签: vb.net winforms

我希望我能说清楚我的问题是什么。我已经制作了自己的图表控件

Public Class MyChart
  Inherits Chart
  [...]
End Class

在这个课程中,我处理图表的MouseDown事件,并执行缩放,拖动标记等操作。

在我正在使用图表的项目中,我还处理MouseDown事件以执行更具体的操作。现在有这个问题:

在MyChart类的MouseDown事件处理程序中,我使用鼠标中键拖动图表。

然而,在项目MouseDown事件处理程序中,我检查用户是否点击了特定对象,并希望让他也用鼠标中键拖动此对象。问题是,MyChart中的处理程序首先执行,因此我无法检查用户是否点击了该对象(因此启动了对该对象的拖动)。

我需要的是首先执行项目中的事件处理程序,然后执行MyChart中的事件处理程序。

希望更清楚:

(Dummy Code)
Public Class SomeProject
  WithEvents Chart as MyChart
  Public Sub Chart_MouseDown(sender as object, e as MouseEventArgs) Handles Chart.MouseDown
    'This is executed second, but should be executed first.
  End Sub
End Class

Public Class MyChart
  Inherits Chart
  Public Sub MyChart_MouseDown(sender as object, e as MouseEventArgs) Handles Me.MouseDown
    'This is executed first, but should be executed second.
  End Sub
End Class

我有什么方法可以做到这一点吗?

1 个答案:

答案 0 :(得分:2)

尝试创建自己的活动:

Public Class MyChart
  Inherits Chart

  Public Event ChartMouseDown(sender As Object, e As MouseEventArgs)

  Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
    RaiseEvent ChartMouseDown(Me, e)
    MyBase.OnMouseDown(e)
    // your second code here...
  End Sub  
End Class

然后您的项目代码如下所示:

Public Class SomeProject
  WithEvents Chart as MyChart
  Public Sub Chart_ChartMouseDown(sender as object, e as MouseEventArgs) _
                                  Handles Chart.ChartMouseDown
    // your first code here...
  End Sub
End Class