我正在使用此代码将图像放入列表框但文本未显示。当我点击列表然后显示。有什么问题?
form_load()
{
listbox1.Items.Add("string");
listbox1.DrawMode = DrawMode.OwnerDrawVariable;
}
private void listbox1_DrawItem(object sender, DrawItemEventArgs e)
{
ListBox lst = sender as ListBox;
e.Graphics.DrawImage(imageList1.Images[0], 0, 0, 10, 10);
e.Graphics.DrawString(lst.Text, this.Font,SystemBrushes.ControlDark, 11, 0);
}
答案 0 :(得分:2)
好吧,看起来你正在错误地绘制你的物品。正在为列表框中的每个项目调用DrawItem
事件,但您在相同位置始终绘制相同文本。您应该使用e.Bounds
来确定每个项目的位置。如果您需要一些非标准尺寸,也可以处理MeasureItem
事件来为每个项目设置自定义边界。
同样lst.Text
在这里没有多大意义,它应该是基于e.Index
绘制的当前项目的文本。
因此,部分代码绘制字符串可能类似于:
e.Graphics.DrawString(lst.GetItemText(lst.Items[e.Index]),
this.Font, SystemBrushes.ControlDark, e.Bounds.Left, e.Bounds.Top);
您也可以在MSDN找到有用的example。