Windows下桌面应用程序开发自己比较弱,好像我也不经常做,最近有一个程序,用了.net自带的ListBox控件,遇到一个问题,就是ListBox默认的行高是不能改的(有这个属性,但是简单的设置是无效的).使用Google大神查找一翻后发现,如果想实现这个功能,需要先将DrawMode设为OwnerDrawFixed,然后在DrawItem事件里自己画每一个项.
Code
if (IndexlistBox.Items.Count < 1)
return;
this.IndexlistBox.ItemHeight = 25;
using (Graphics g = e.Graphics)
{
//如果该项被选择
Brush myBrush = Brushes.Black;
if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
e.Graphics.FillRectangle(new SolidBrush(this.BackColor), e.Bounds);
else
e.Graphics.FillRectangle(new SolidBrush(IndexlistBox.BackColor), e.Bounds);
//画出项文本
e.Graphics.DrawString(IndexlistBox.GetItemText(IndexlistBox.Items[e.Index]), e.Font, myBrush, e.Bounds.X, e.Bounds.Y);
e.DrawFocusRectangle();
}