1

我正在尝试为 axShockwaveFlash 控件设计一个“直通”。此控件没有.MouseDown,.MouseUp.MouseMove与之关联的事件。可悲的是,我需要在任何冲击波控件上检测这些事件,因为它们在另一个类中使用(它在各种不同的控件上检测这些事件)。

因此,我尝试设计一个自定义类,修改 axShockwaveFlash 类以包含这些事件。但是,我收到以下错误:

“派生类不能引发基类事件。”

在线上:

RaiseEvent MouseDown(Me, EventArgs.Empty)

完整代码(减去 up 和 move 函数):

Imports System.Runtime.InteropServices
Imports System.Threading

Public Class MousedFlash

    Inherits AxShockwaveFlashObjects.AxShockwaveFlash

    'WndProc Inputs:
    Private Const WM_RBUTTONDOWN As Integer = &H204
    Private Const WM_LBUTTONDOWN As Integer = &H201

    Protected Overloads Sub OnMouseDown()
        RaiseEvent MouseDown(Me, EventArgs.Empty)
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        Select Case m.Msg
            Case WM_RBUTTONDOWN
                Debug.WriteLine("MOUSE FLASH - right down!")
                Call OnMouseDown()
                Return
            Case WM_LBUTTONDOWN
                Debug.WriteLine("MOUSE FLASH - left down!")
                Call OnMouseDown()
                Return
        End Select
        MyBase.WndProc(m)
    End Sub

End Class

我认为基类是AxShockwaveFlashObjects- 但我看不到这里定义的鼠标事件。在这个问题上我的深度 - 任何帮助表示赞赏。

4

2 回答 2

2

看看这个页面,你应该调用直接处理该事件的 Sub ,而不是尝试引发基类事件。所以尝试更换

Protected Overloads Sub OnMouseDown()
    RaiseEvent MouseDown(Me, EventArgs.Empty)
End Sub

Protected Overloads Sub OnMouseDown()
    MyBase.MouseDown(Me, EventArgs.Empty)
End Sub
于 2015-07-16T01:21:12.090 回答
0

谢谢。最后,我的粗心大意和错误的超车类型混合在一起。最终工作更换:

Shadows Event MouseDown As System.EventHandler
Protected Overridable Sub OnMouseDownTrigger()
    RaiseEvent MouseDown(Me, EventArgs.Empty)
End Sub
于 2015-07-16T18:23:11.393 回答