【问题标题】:How to set number of items in owner-drawn listbox如何在所有者绘制的列表框中设置项目数
【发布时间】:2014-05-12 03:21:08
【问题描述】:

我已经在我的 C# owner-drawn-fixed listbox 中实现了 MeasureItem 和 DrawItem 方法。

什么都没有。

出于绝望,我在 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);
}

【问题讨论】:

  • 你能展示你的代码吗?
  • 把这个贴到你的帖子上。它看起来会好很多。另外,您是否正在寻找OnPropertyChanged?
  • 我看不出 OnPropertyChanged 有什么帮助;没有任何变化:我只想显示一个列表。
  • "entries" 是一个包含要绘制的项目的列表。自绘列表框的全部目的是显示条目。当我将虚拟项目添加到 Items 集合时,条目项目被正确绘制。看起来唯一的问题是告诉列表框有多少项目。

标签: c# listbox numbers ownerdrawn


【解决方案1】:

尝试将 ListBox 的 DataSource 设为条目集合:

listVersions.DataSource = entries

【讨论】:

    【解决方案2】:

    这可能会有所帮助:http://msdn.microsoft.com/en-us/library/windows/desktop/bb761340%28v=vs.85%29.aspx

    他们(据称)有一个可以发送到列表框的 LB_SETCOUNT 消息。

    Microsoft 确实应该在 CListBox 中提供一个 SetCount () 方法,但他们经常忽略非玩具应用程序所需的方法。呜呜呜……

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多