Если кому-то нужен код VB.NET, я адаптировал этот код к нему.Я не дурачился с AutoSize
в классе.Элемент управления должен быть добавлен в панель инструментов после сборки проекта.Вы можете установить AutoSize
на False
там так же, как и любой другой элемент управления.
Если это имеет значение, я просто помещаю код класса ниже End Class
формы, в которой я его использовал.
Чтобы прояснить, что делает AutoSize
, преимущество этого нового элемента управления состоит в том, что часть флажка может быть увеличена.В обычном флажке вы не можете изменить часть блока.
Единственный недостаток этого нового элемента управления, который я вижу, состоит в том, что при изменении его размера часть блока выходит за текст, если выровнен по левому краю;исправьте это с помощью свойства TextAlign
.
Public Class NewCheckBox
Inherits CheckBox
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
'Make the box you check 3/4 the height
Dim boxsize As Integer = Me.Height * 0.75
Dim rect As New Rectangle(
New Point(0, Me.Height / 2 - boxsize / 2),
New Size(boxsize, boxsize)
)
ControlPaint.DrawCheckBox(e.Graphics, rect, If(Me.Checked, ButtonState.Checked, ButtonState.Normal))
End Sub
End Class