Как поменять стиль (форму) Checkbox (Сделать его круглым, квадратным) - Visual Basic .NET
Формулировка задачи:
Здравствуйте. Как поменять стиль(форму) Checkbox(Сделать его круглым, квадратным) и как поменять галочку к Примеру на крестик?
Решение задачи: «Как поменять стиль (форму) Checkbox (Сделать его круглым, квадратным)»
textual
Листинг программы
Imports System.ComponentModel Public Class CheckBoxEx Inherits Control Event CheckedChanged(sender As Object, e As EventArgs) Private _checkedState As State = State.Unchecked Private _enterMouse As Boolean = False Enum State Unchecked = -1 Checked = 0 End Enum Sub New() SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor Or ControlStyles.UserPaint, True) End Sub ''' <summary> ''' Получает или указывает состояние объекта. ''' </summary> ''' <value></value> ''' <returns></returns> ''' <remarks></remarks> <DefaultValue(State.Unchecked)> Public Property CheckState As State Get Return _checkedState End Get Set(value As State) _checkedState = value MyBase.Refresh() RaiseEvent CheckedChanged(Me, New EventArgs) End Set End Property Public Overrides Property Text As String Get Return MyBase.Text End Get Set(value As String) MyBase.Text = value MyBase.Refresh() End Set End Property Private Sub OnRedrawCheck(sender As Object, e As PaintEventArgs) With e.Graphics Dim gp As New Drawing2D.GraphicsPath Dim _radius As Integer = 8 Dim _size As Integer = 16 Dim _fillCheckBG As New Drawing2D.LinearGradientBrush(New Rectangle(2, 2, _size, _size), Color.WhiteSmoke, Color.FromArgb(230, 230, 230), 90) With gp .AddArc(New Rectangle(2, 2, _radius, _radius), 180, 90) .AddArc(New Rectangle(_size + 2 - _radius, 2, _radius, _radius), 270, 90) .AddArc(New Rectangle(_size + 2 - _radius, _size + 2 - _radius, _radius, _radius), 0, 90) .AddArc(New Rectangle(2, _size + 2 - _radius, _radius, _radius), 90, 90) .CloseFigure() End With .FillPath(_fillCheckBG, gp) If _enterMouse Then .DrawPath(Pens.SteelBlue, gp) Else .DrawPath(Pens.LightGray, gp) Select Case _checkedState Case State.Checked .DrawLines(New Pen(Brushes.SteelBlue, 2), New Point() {New Point(6, 10), New Point((_size / 2) + 1, _size - 2), New Point(_size - 2, 5)}) End Select .DrawString(Text, Font, New SolidBrush(ForeColor), 2 + _size + 2, 2 + (_size / 2) - TextRenderer.MeasureText(Text, Font).Height / 2) End With End Sub Private Sub CheckBoxEx_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick If e.Button = Windows.Forms.MouseButtons.Left Then If _checkedState = State.Checked Then _checkedState = State.Unchecked ElseIf _checkedState = State.Unchecked Then _checkedState = State.Checked End If MyBase.Refresh() End If End Sub Private Sub CheckBoxEx_MouseEnter(sender As Object, e As EventArgs) Handles Me.MouseEnter _enterMouse = True : MyBase.Refresh() End Sub Private Sub CheckBoxEx_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave _enterMouse = False : MyBase.Refresh() End Sub Private Sub CheckBoxEx_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias OnRedrawCheck(sender, e) End Sub End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д