c#中,在不重写Button的Click事件的情况下(因为我用的是第三方的Button,该控件的Click事件无法进行重写),我如何在单击这个控件时触发自己的事件呢?
谢谢,急,谁答得上来我送谁50分。!!!

解决方案 »

  1.   

    消息拦截,捕获WM_CLICK后,执行你的按钮的Click
      

  2.   

    下面是画xp风格的textbox,一样的道理
    Declare Function GetWindowDC Lib "user32" Alias "GetWindowDC" (ByVal hwnd As IntPtr) As IntPtr
        Declare Function ReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal hwnd As IntPtr, ByVal hdc As IntPtr) As IntPtr
     Protected Overrides Sub wndproc(ByRef m As Message)
            MyBase.WndProc(m)
            Dim i As IntPtr
            If m.Msg = 15 Or m.Msg = 307 Then
                i = GetWindowDC(TextBox1.Handle)
                If i.ToInt32 = 0 Then
                    Return
                Else
                    Dim g As Graphics = Graphics.FromHdc(i)
                   g.DrawRectangle(Pens.Red, 0, 0, TextBox1.Width - 1, TextBox1.Height-1)
                   g.Dispose()
                End If
                m.Result = IntPtr.Zero
                ReleaseDC(m.HWnd, i)
            End If
       End Sub
      

  3.   

    重写WndProc方法,在里面进行拦截。
    protected override void WndProc(ref Message m)
    {
       base.WndProc (ref m);   //这里设个断点看看具体消息然后就可以在这前面放if去执行你自己的代码
    }
      

  4.   

    忘记告诉大家了,我写的不是继承UserConrol,而是继承一个类"DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit",这个类里无法截获WndProc()啊,怎么办,急死了,
      

  5.   

    订阅按钮的Click事件,在你的事件方法内触发你自己的事件
      

  6.   

    他类"DevExpress.XtraEditors.Repository.RepositoryItemHyperLinkEdit",的基类是什么啊?你在类视图那里找他的基类啊,一层层找下去应该会有这个事件的。