如何调用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);
}

如何调用formload drawitem上的事件

好吧,看起来你画的项目不正确。正在为列表框中的每个项目调用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上找到一些有用的例子。