2013年5月14日 星期二

[VB.NET]Custom Contol自訂控制項事件

一,客製一個控制項是繼承Button,增加一個按下滑鼠右鍵Click事件,事件名稱:RightClick


自訂控制項

 
Public Class SuperButton
    Inherits Button

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
        MyBase.OnPaint(e)

        '請在此處加入您自訂的繪製程式碼
    End Sub
    '自訂一個新的事件RightClick
    Dim _handlers As New List(Of EventHandler)

    Public Custom Event RightClick As EventHandler
        AddHandler(value As EventHandler)
            _handlers.Add(value)
        End AddHandler

        RemoveHandler(value As EventHandler)
            If _handlers.Contains(value) Then
                _handlers.Remove(value)
            End If
        End RemoveHandler

        RaiseEvent(sender As Object, e As System.EventArgs)
            For Each handler As EventHandler In _handlers
                Try
                    handler.Invoke(sender, e)
                Catch ex As Exception
                    Debug.WriteLine(ex.ToString())
                End Try
            Next
        End RaiseEvent
    End Event
    '監聽滑鼠事件
    Protected Overrides Sub OnMouseDown(mevent As System.Windows.Forms.MouseEventArgs)
        MyBase.OnMouseDown(mevent)
        '當滑鼠被按下右鍵時則回應自訂事件
        If mevent.Button = Windows.Forms.MouseButtons.Right Then
            RaiseEvent RightClick(Me, mevent)
        End If
    End Sub

End Class

沒有留言:

張貼留言