如何调用formload drawitem上的事件
本文关键字:drawitem 事件 formload 何调用 调用 | 更新日期: 2023-09-27 18:25:33
我使用此代码将图像放入列表框中,但文本不显示。当我点击列表时,它就会显示出来。问题出在哪里?
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);
}
好吧,看起来你画的项目不正确。正在为列表框中的每个项目调用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上找到一些有用的例子。