ListBox居中显示字体
首先将Listbox的DrawMode属性设置为DrawMode.OwnerDrawVariable
加载事件DrawItem和MeasureItem,如不加入MeasureItem事件,则Item会使用默认高度重绘,字体显示不完全,各位可以自己尝试一下
ListBox _listBox = new ListBox();
_listBox.DrawMode = DrawMode.OwnerDrawVariable;
_listBox.DrawItem += _listBox_DrawItem;
_listBox.MeasureItem += _listBox_MeasureItem;
// set listbox item height
void _listBox_MeasureItem(object sender, MeasureItemEventArgs e)
{
e.ItemHeight = 30;
}
// make the item text center aligned
void _listBox_DrawItem(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
System.Drawing.StringFormat strFmt = new System.Drawing.StringFormat(System.Drawing.StringFormatFlags.NoClip);
strFmt.Alignment = System.Drawing.StringAlignment.Center;
RectangleF rf = new RectangleF(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height);
//You can also use DrawImage to add some customized image before or after text string, of course backgroud image
e.Graphics.DrawString(this.Items[e.Index].ToString(), e.Font, new System.Drawing.SolidBrush(e.ForeColor), rf, strFmt);
}
本文介绍如何通过设置ListBox的DrawMode为OwnerDrawVariable,并处理DrawItem和MeasureItem事件,来实现ListBox中字体的居中显示。通过MeasureItem事件设置Item的高度,确保字体完整显示,然后在DrawItem事件中利用StringFormat进行文字居中对齐,从而达到理想的效果。
264

被折叠的 条评论
为什么被折叠?



