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 Sub OnPaintDC(e As PaintDCArgs) If Not IsNothing(paintDC) Then paintDC(This, e) End If End Sub 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 Sub OnClick(e As Args) If Not IsNothing(click) Then click(This, e) End If End Sub 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 Sub OnDoubleClick(e As Args) If Not IsNothing(doubleClick) Then doubleClick(This, e) End If End Sub 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 Sub OnMove(e As Args) If Not IsNothing(move) Then move(This, e) End If End Sub Private move As Handler 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 Sub OnMouseEnter(e As MouseArgs) If Not IsNothing(mouseEnter) Then mouseEnter(This, e) End If End Sub 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 Sub OnMouseMove(e As MouseArgs) If Not IsNothing(mouseMove) Then mouseMove(This, e) End If End Sub 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 Sub OnMouseHover(e As MouseArgs) If Not IsNothing(mouseHover) Then mouseHover(This, e) End If End Sub Private mouseHover As MouseHandler Public Sub AddMouseLeave(h As MouseHandler) If IsNothing(mouseLeave) Then mouseLeave = h Else mouseLeave += h End If End Sub Sub RemoveMouseLeave(h As MouseHandler) If Not IsNothing(mouseLeave) Then mouseLeave -= h End If End Sub Protected Sub OnMouseLeave(e As MouseArgs) If Not IsNothing(mouseLeave) Then mouseLeave(This, e) End If End Sub Private mouseLeave As MouseHandler 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 Sub OnMouseDown(e As MouseArgs) If Not IsNothing(mouseDown) Then mouseDown(This, e) End If End Sub 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 Sub OnMouseClick(e As MouseArgs) If Not IsNothing(mouseClick) Then mouseClick(This, e) End If End Sub 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 Sub OnMouseDoubleClick(e As MouseArgs) If Not IsNothing(mouseDoubleClick) Then mouseDoubleClick(This, e) End If End Sub 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 Sub OnMouseUp(e As MouseArgs) If Not IsNothing(mouseUp) Then mouseUp(This, e) End If End Sub 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 Sub OnKeyDown(e As KeyArgs) If Not IsNothing(keyDown) Then keyDown(This, e) End If End Sub 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 Sub OnKeyUp(e As KeyArgs) If Not IsNothing(keyUp) Then keyUp(This, e) End If End Sub 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 Sub OnKeyPress(e As KeyPressArgs) If Not IsNothing(keyPress) Then keyPress(This, e) End If End Sub 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 Sub OnCreate(e As CreateArgs) If Not IsNothing(create) Then create(This, e) End If End Sub 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 Sub OnDestroy(e As Args) If Not IsNothing(destroy) Then destroy(This, e) End If End Sub Private destroy As Handler