Public Sub AddPaintDC(h As PaintDCHandler) If IsNothing(paintDC) Then paintDC = h Else paintDC += h End If End Sub Sub RemovePaintDC(h As PaintDCHandler) If Not IsNothing(paintDC) Then paintDC -= h End If End Sub Protected Function OnPaintDC(e As PaintDCArgs) As Boolean If Not IsNothing(paintDC) Then paintDC(This, e) Return True End If End Function Private paintDC As PaintDCHandler Public Sub AddClick(h As Handler) If IsNothing(click) Then click = h Else click += h End If End Sub Sub RemoveClick(h As Handler) If Not IsNothing(click) Then click -= h End If End Sub Protected Function OnClick(e As Args) As Boolean If Not IsNothing(click) Then click(This, e) Return True End If End Function Private click As Handler Public Sub AddDoubleClick(h As Handler) If IsNothing(doubleClick) Then doubleClick = h Else doubleClick += h End If End Sub Sub RemoveDoubleClick(h As Handler) If Not IsNothing(doubleClick) Then doubleClick -= h End If End Sub Protected Function OnDoubleClick(e As Args) As Boolean If Not IsNothing(doubleClick) Then doubleClick(This, e) Return True End If End Function Private doubleClick As Handler Public Sub AddMove(h As Handler) If IsNothing(move) Then move = h Else move += h End If End Sub Sub RemoveMove(h As Handler) If Not IsNothing(move) Then move -= h End If End Sub Protected Function OnMove(e As Args) As Boolean If Not IsNothing(move) Then move(This, e) Return True End If End Function Private move As Handler Public Sub AddResize(h As ResizeHandler) If IsNothing(resize) Then resize = h Else resize += h End If End Sub Sub RemoveResize(h As ResizeHandler) If Not IsNothing(resize) Then resize -= h End If End Sub Protected Function OnResize(e As ResizeArgs) As Boolean If Not IsNothing(resize) Then resize(This, e) Return True End If End Function Private resize As ResizeHandler Public Sub AddMouseEnter(h As MouseHandler) If IsNothing(mouseEnter) Then mouseEnter = h Else mouseEnter += h End If End Sub Sub RemoveMouseEnter(h As MouseHandler) If Not IsNothing(mouseEnter) Then mouseEnter -= h End If End Sub Protected Function OnMouseEnter(e As MouseArgs) As Boolean If Not IsNothing(mouseEnter) Then mouseEnter(This, e) Return True End If End Function Private mouseEnter As MouseHandler Public Sub AddMouseMove(h As MouseHandler) If IsNothing(mouseMove) Then mouseMove = h Else mouseMove += h End If End Sub Sub RemoveMouseMove(h As MouseHandler) If Not IsNothing(mouseMove) Then mouseMove -= h End If End Sub Protected Function OnMouseMove(e As MouseArgs) As Boolean If Not IsNothing(mouseMove) Then mouseMove(This, e) Return True End If End Function Private mouseMove As MouseHandler Public Sub AddMouseHover(h As MouseHandler) If IsNothing(mouseHover) Then mouseHover = h Else mouseHover += h End If End Sub Sub RemoveMouseHover(h As MouseHandler) If Not IsNothing(mouseHover) Then mouseHover -= h End If End Sub Protected Function OnMouseHover(e As MouseArgs) As Boolean If Not IsNothing(mouseHover) Then mouseHover(This, e) Return True End If End Function Private mouseHover As MouseHandler Public Sub AddMouseLeave(h As Handler) If IsNothing(mouseLeave) Then mouseLeave = h Else mouseLeave += h End If End Sub Sub RemoveMouseLeave(h As Handler) If Not IsNothing(mouseLeave) Then mouseLeave -= h End If End Sub Protected Function OnMouseLeave(e As Args) As Boolean If Not IsNothing(mouseLeave) Then mouseLeave(This, e) Return True End If End Function Private mouseLeave As Handler Public Sub AddMouseDown(h As MouseHandler) If IsNothing(mouseDown) Then mouseDown = h Else mouseDown += h End If End Sub Sub RemoveMouseDown(h As MouseHandler) If Not IsNothing(mouseDown) Then mouseDown -= h End If End Sub Protected Function OnMouseDown(e As MouseArgs) As Boolean If Not IsNothing(mouseDown) Then mouseDown(This, e) Return True End If End Function Private mouseDown As MouseHandler Public Sub AddMouseClick(h As MouseHandler) If IsNothing(mouseClick) Then mouseClick = h Else mouseClick += h End If End Sub Sub RemoveMouseClick(h As MouseHandler) If Not IsNothing(mouseClick) Then mouseClick -= h End If End Sub Protected Function OnMouseClick(e As MouseArgs) As Boolean If Not IsNothing(mouseClick) Then mouseClick(This, e) Return True End If End Function Private mouseClick As MouseHandler Public Sub AddMouseDoubleClick(h As MouseHandler) If IsNothing(mouseDoubleClick) Then mouseDoubleClick = h Else mouseDoubleClick += h End If End Sub Sub RemoveMouseDoubleClick(h As MouseHandler) If Not IsNothing(mouseDoubleClick) Then mouseDoubleClick -= h End If End Sub Protected Function OnMouseDoubleClick(e As MouseArgs) As Boolean If Not IsNothing(mouseDoubleClick) Then mouseDoubleClick(This, e) Return True End If End Function Private mouseDoubleClick As MouseHandler Public Sub AddMouseUp(h As MouseHandler) If IsNothing(mouseUp) Then mouseUp = h Else mouseUp += h End If End Sub Sub RemoveMouseUp(h As MouseHandler) If Not IsNothing(mouseUp) Then mouseUp -= h End If End Sub Protected Function OnMouseUp(e As MouseArgs) As Boolean If Not IsNothing(mouseUp) Then mouseUp(This, e) Return True End If End Function Private mouseUp As MouseHandler Public Sub AddKeyDown(h As KeyHandler) If IsNothing(keyDown) Then keyDown = h Else keyDown += h End If End Sub Sub RemoveKeyDown(h As KeyHandler) If Not IsNothing(keyDown) Then keyDown -= h End If End Sub Protected Function OnKeyDown(e As KeyArgs) As Boolean If Not IsNothing(keyDown) Then keyDown(This, e) Return True End If End Function Private keyDown As KeyHandler Public Sub AddKeyUp(h As KeyHandler) If IsNothing(keyUp) Then keyUp = h Else keyUp += h End If End Sub Sub RemoveKeyUp(h As KeyHandler) If Not IsNothing(keyUp) Then keyUp -= h End If End Sub Protected Function OnKeyUp(e As KeyArgs) As Boolean If Not IsNothing(keyUp) Then keyUp(This, e) Return True End If End Function Private keyUp As KeyHandler Public Sub AddKeyPress(h As KeyPressHandler) If IsNothing(keyPress) Then keyPress = h Else keyPress += h End If End Sub Sub RemoveKeyPress(h As KeyPressHandler) If Not IsNothing(keyPress) Then keyPress -= h End If End Sub Protected Function OnKeyPress(e As KeyPressArgs) As Boolean If Not IsNothing(keyPress) Then keyPress(This, e) Return True End If End Function Private keyPress As KeyPressHandler Public Sub AddCreate(h As CreateHandler) If IsNothing(create) Then create = h Else create += h End If End Sub Sub RemoveCreate(h As CreateHandler) If Not IsNothing(create) Then create -= h End If End Sub Protected Function OnCreate(e As CreateArgs) As Boolean If Not IsNothing(create) Then create(This, e) Return True End If End Function Private create As CreateHandler Public Sub AddDestroy(h As Handler) If IsNothing(destroy) Then destroy = h Else destroy += h End If End Sub Sub RemoveDestroy(h As Handler) If Not IsNothing(destroy) Then destroy -= h End If End Sub Protected Function OnDestroy(e As Args) As Boolean If Not IsNothing(destroy) Then destroy(This, e) Return True End If End Function Private destroy As Handler Public Sub AddPaintBackground(h As PaintBackgroundHandler) If IsNothing(paintBackground) Then paintBackground = h Else paintBackground += h End If End Sub Sub RemovePaintBackground(h As PaintBackgroundHandler) If Not IsNothing(paintBackground) Then paintBackground -= h End If End Sub Protected Function OnPaintBackground(e As PaintBackgroundArgs) As Boolean If Not IsNothing(paintBackground) Then paintBackground(This, e) Return True End If End Function Private paintBackground As PaintBackgroundHandler