Вы можете просто сделать отметку в случае Paint:
private void checkBox1_Paint(object sender, PaintEventArgs e)
{
Point pt = new Point(e.ClipRectangle.Left + 2, e.ClipRectangle.Top + 4);
Rectangle rect = new Rectangle(pt, new Size(22, 22));
if (checkBox1.Checked)
{
using (Font wing = new Font("Wingdings", 14f))
e.Graphics.DrawString("ü", wing, Brushes.DarkOrange,rect);
}
e.Graphics.DrawRectangle(Pens.DarkSlateBlue, rect);
}
для этой работы вам необходимо:
- набор
Apperance = Appearance.Button
- набор
FlatStyle = FlatStyle.Flat
- комплект
TextAlign = ContentAlignment.MiddleRight
- набор
FlatAppearance.BorderSize = 0
- набор
AutoSize = false
Если вы хотите повторно использовать это будет лучше, чтобы подклассы флажок и переопределить OnPaint
событие там. Вот пример:
public ColorCheckBox()
{
Appearance = System.Windows.Forms.Appearance.Button;
FlatStyle = System.Windows.Forms.FlatStyle.Flat;
TextAlign = ContentAlignment.MiddleRight;
FlatAppearance.BorderSize = 0;
AutoSize = false;
Height = 16;
}
protected override void OnPaint(PaintEventArgs pevent)
{
//base.OnPaint(pevent);
pevent.Graphics.Clear(BackColor);
using (SolidBrush brush = new SolidBrush(ForeColor))
pevent.Graphics.DrawString(Text, Font, brush, 27, 4);
Point pt = new Point(4 , 4);
Rectangle rect = new Rectangle(pt, new Size(16, 16));
pevent.Graphics.FillRectangle(Brushes.Beige, rect);
if (Checked)
{
using (SolidBrush brush = new SolidBrush(ccol))
using (Font wing = new Font("Wingdings", 12f))
pevent.Graphics.DrawString("ü", wing, brush, 1,2);
}
pevent.Graphics.DrawRectangle(Pens.DarkSlateBlue, rect);
Rectangle fRect = ClientRectangle;
if (Focused)
{
fRect.Inflate(-1, -1);
using (Pen pen = new Pen(Brushes.Gray) { DashStyle = DashStyle.Dot })
pevent.Graphics.DrawRectangle(pen, fRect);
}
}
Вам может понадобиться Твик размеры элемента управления и шрифта .. И если вы хотите, чтобы вам расширить код в честь TextAlign
и CheckAlign
свойства.
И если вам нужен три-государственного контроль вы можете адаптировать код для отображения третьего состояния внешнего вида, особенно если вы думаете, который выглядит лучше, чем оригинал ..
Пожалуйста, вы скажите мне, что писать? – user5894584
Пожалуйста, не делайте этого. Используйте регулярный флажок, который каждый узнает и знает, как использовать. Используйте тот, который будет правильно обрабатывать навигацию по клавиатуре. И используйте тот, который соответствует выбранной вами теме, чтобы он не торчал, как больной палец. Встроенные элементы управления уже полностью отлажены; ваше одноразовое управление, скорее всего, будет больше похоже на квадратное колесо. Ваши личные эстетические чувства часто не разделяются вашими пользователями. Лучше всего направить свое внимание на функциональность. –
Спасибо за ответ и за ваш интерес.Я бы просто сказал вам, что создание приятного графического интерфейса не обязательно означает потерять функциональность главных принципов различных элементов управления, вам просто нужно скорректировать весь код до его идеи. – user5894584