| Imports System
Imports System.ComponentModel
Imports System.CompoenetModel.Design
Imports System.Drawing
Imports System.Drawing.Design
Imports System.Drawing.Drawing2D
Imports System.Windows.Forms.Design
<DEFAULTEVENT("CLICK"), DefaultProperty(?Text?)>_
Public Class MyBasicButton
Inherits System.Windows.Forms.UserControl
+[Windows Generated Code]
Protected Overrides Sub OnPaint(ByVal e as PaintEventArgs)
Dim g as Graphics = e.Graphics
g.SmoothingMode = SmoothingMode.AntiAlias
PaintBorderAndText(g)
MyBase.OnPaint(e)
End Sub
Private Sub PaintBorderAndText(ByVal g as Graphics)
Dim rect as New Rectangle(0, 0, Me.Width – 1, Me.Height – 1)
Dim rectf as New RectangleF(0, 0, Me.Width, Me.Height)
Dim sf as New StringFormat()
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
sf.HotKeyPrefix = System.Drawing.Text.HotKeyPrefix.Show
sf.Trimming = StringTrimming.EllipsesCharacter
sf.FormatFlags = StringFormatFlags.NoWrap
Dim b as Brush
‘Draw the border
g.DrawRectangle(New Pen(Color.Black), rect)
Select Case m_State
Case ButtonState.None
b = New SolidBrush(Color.Black)
Case ButtonState.Over
b = New SolidBrush(Color.Blue)
Case ButtonState.Clicked
b = New SolidBrush(Color.Red)
End Select
g.DrawString(m_Text, Me.Font, b, rectf, sf)
End Sub
Protected Overrides Sub OnMouseEnter(ByVal e as EventArgs)
MyBase.OnMouseEnter(e)
m_State = ButtonState.Over
Invalidate()
End Sub
Protected Overrides Sub OnMouseLeave(ByVal e as EventArgs)
MyBase.OnMouseLeave(e)
m_State = ButtonState.None
Invalidate()
End Sub
Protected Overrides Sub OnMouseDown(ByVal e as MouseEventArgs)
MyBase.OnMouseDown(e)
m_State = ButtonState.Clicked
Invalidate()
End Sub
Protected Overrides Sub OnMouseUp(ByVal e as MouseEventArgs)
MyBase.OnMouseUp(e)
Select Case m_State
Case ButtonState.Clicked
m_State = ButtonState.Over
Case ButtonState.Over
m_State = ButtonState.None
End Select
Invalidate()
End Sub
Protected Overrides Sub OnMove(ByVal e as EventArgs)
MyBase.OnMove(e)
Invalidate()
End Sub
Protected Overrides Sub OnResize(ByVal e as EventArgs)
MyBase.OnResize(e)
Invalidate()
End Sub
Private m_Text as String
<DESIGNERSERIALIZATIONVISIBILITY(DESIGNERSERIALIZATIONVISIBILITY.VISIBLE), color="#0000ff" Browsable(True)> _
Public Overloads Overrides Property Text() as String
Get
Return m_Text
End Get
Set (ByVal value as String)
m_Text = value
Invalidate()
End Set
End Property
Private m_State as ButtonState = ButtonState.None
Public Enum ButtonState as Integer
None = 0
Over = 1
Clicked = 2
End Enum
End Class
|