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 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
	Sub OnResize(e As ResizeArgs)
		If Not IsNothing(resize) Then
			resize(This, e)
		End If
	End Sub
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
	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

