繁体   English   中英

CheckedListBox:如何增加复选框的大小并更改刻度线的颜色

[英]CheckedListBox: How to increase size of checkbox and change color of tick mark

我想覆盖CheckedListBox的默认外观,如下所示: 列表框中的大复选框

请注意复选框和彩色刻度线的增加。

为此,您需要通过继承CheckedListbox创建自己的自定义控件,并且需要覆盖OnDrawItem(DrawItemEventArgs e)事件

以下是代码:

class BigCheckedListBox : CheckedListBox
{
    public BigCheckedListBox()
    {
        ForeColor = Color.Turquoise;
        Font = new Font("Segoe UI", 12f);
    }
    protected override void OnDrawItem(DrawItemEventArgs e)
    {
        e.DrawBackground();

        var b = e.Bounds;
        var state = GetItemChecked(e.Index) ? CheckBoxState.CheckedNormal : CheckBoxState.UncheckedNormal;
        Size glyphSize = CheckBoxRenderer.GetGlyphSize(e.Graphics, state);
        int checkPad = (b.Height - glyphSize.Height) / 2;
        var pt = new Point(b.X + checkPad, b.Y + checkPad);

        Rectangle rect = new Rectangle(pt, new Size(20, 20));
        e.Graphics.DrawRectangle(Pens.Green, rect);//This is for Checkbox rectangle

        //This is for drawing string text
        using (SolidBrush brush = new SolidBrush(ForeColor))
            e.Graphics.DrawString(this.Items[e.Index].ToString(), Font, brush, pt.X + 27f, pt.Y); 


        if (state == CheckBoxState.CheckedNormal)
        {
            using (SolidBrush brush = new SolidBrush(ForeColor))
            using (Font wing = new Font("Wingdings", 17f, FontStyle.Bold))
                e.Graphics.DrawString("ü", wing, brush, pt.X-4, pt.Y-1); //This is For tick mark
        }
    }
}

希望这能达到目的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM