如何设置所有者绘制的列表框中的项目数

时间:2013-11-21 22:16:19

标签: c# listbox numbers ownerdrawn

我在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);
}

2 个答案:

答案 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()方法,但它们通常会忽略非玩具应用程序所需的方法。哎呀...