我在C#owner-drawn-fixed列表框中实现了MeasureItem和DrawItem方法。
什么都没有出现。
出于绝望,我在Items系列中添加了三个随机字符串,并显示了我的第一个项目!
这告诉我列表框不知道有项目。我是否必须向Items集合中添加数百个虚拟项目,只是为了查看我的项目?这是个傻瓜;应该有办法告诉列表框有多少项 - 我找不到它!
如何设置所有者绘制列表框中的项目数?
代码:
private void listVersions_MeasureItem (object sender, MeasureItemEventArgs e)
{
e.ItemHeight = font.Height + 6;
}
private void listVersions_DrawItem (object sender, DrawItemEventArgs e)
{
if (entries == null)
return;
int i = e.Index;
if (i < 0 || i >= entries.Count)
return;
e.Graphics.FillRectangle (new SolidBrush (BackColor), e.Bounds);
VersionEntry ent = entries[i];
Rectangle rect = e.Bounds;
Graphics g = e.Graphics;
g.DrawString (i.ToString () + " " + ent.name, font, Brushes.Black, rect.Location);
}
答案 0 :(得分:2)
尝试将ListBox的DataSource作为条目集合:
listVersions.DataSource = entries
答案 1 :(得分:0)
这可能有所帮助:http://msdn.microsoft.com/en-us/library/windows/desktop/bb761340%28v=vs.85%29.aspx
他们(据称)有一条LB_SETCOUNT消息,可以发送到列表框。
Microsoft确实应该在CListBox中提供SetCount()方法,但它们通常会忽略非玩具应用程序所需的方法。哎呀...