首页 > 解决方案 > (C#) 垂直对齐 CheckedListBox 项的文本

问题描述

我有一个继承自CheckedListBoxWindows 窗体的类,它包含两个项目。问题如下:当我尝试增加 时ItemHeight,高度会改变,但文本在边界框的左上角。

图片

我希望它在该边界框的中心垂直对齐。我似乎找不到任何可以这样做的财产。我尝试像这样使用 DrawItem 事件

public MyCheckedList()
{
    this.DrawMode = DrawMode.OwnerDrawVariable;
    this.DrawItem += new 
    System.Windows.Forms.DrawItemEventHandler(this.OnDrawItem);
}

public override int ItemHeight
{
    get; set;
}

public override DrawMode DrawMode
{
    get; set;
}

public void OnDrawItem(object sender, DrawItemEventArgs e)
{
    CheckedListBox list = (CheckedListBox)sender;
    if (e.Index > -1)
    {
        object item = list.Items[e.Index];
        e.DrawBackground();
        e.DrawFocusRectangle();
        TextRenderer.DrawText(e.Graphics, item.ToString(), list.Font, e.Bounds, list.ForeColor);
    }
}

好吧,程序甚至没有进入OnDrawItem()方法。我必须覆盖并使它们正常工作也很ItemHeight奇怪DrawMode。有没有其他方法?

标签: c#winformsalignmentcheckedlistbox

解决方案


推荐阅读