【问题标题】:ListBox Items Disappear列表框项目消失
【发布时间】:2013-10-14 04:27:32
【问题描述】:

我目前有一个 ListBox(称为wafersListBox),绑定到某个对象类型(称为wafers)的ArrayList。当我想动态添加到 ListBox 时,我使用以下代码:

wafersListBox.DataSource = null;
wafersListBox.DataSource = wafers;
wafersListBox.Refresh();

这成功地更改了 ListBox 中的项目,但所有项目都消失了(它们仍然存在并且可以选择,但用户只是看不到它们)。

关于如何解决这个问题的任何想法?

更新: 这是我的 Wafer 课程:

public class Wafer
{
    public string maID;

    public string MID
    {
        get
        {
            return maID;
        }
        set
        {
            maID = value;
        }
    }

    public Wafer(string m)
    {
        maID = m;
    }
}

这是我调用的代码,它将当前选定项的副本添加到列表框:

Wafer w = wafersListBox.SelectedItem as Wafer;
wafers.Add(w);          

wafersListBox.DataSource = null;
wafersListBox.DisplayMember = "MID";
wafersListBox.DataSource = wafers;
wafersListBox.Refresh();

【问题讨论】:

  • 您的ArrayList 中的元素有任何信息吗?
  • 我没有看到任何代码初始化您的wafers

标签: c# winforms listbox .net-1.1


【解决方案1】:

抱歉 - 我无法添加额外的评论,这比写一个新的“答案”更可取,但是如果您如下切换行的位置,您会发现有什么不同吗?

    Wafer w = wafersListBox.SelectedItem as Wafer;
    wafers.Add(w);          

    wafersListBox.DataSource = null;
    wafersListBox.DataSource = wafers;
    wafersListBox.DisplayMember = "MID";
    wafersListBox.Refresh();

我刚刚在另一个 SO 帖子 (ListBox doesn't show changes to DataSource) 上遇到了另一件事:

“列表框中还有一个错误可能导致此问题。如果将 SelectionMode 设置为 None,则会出现此问题。

作为一种变通方法,我将选择模式设置为 One,然后在更新数据源时设置回 None。"

【讨论】:

    【解决方案2】:

    您可能应该告诉wafersListBox 使用什么属性作为标题。

    这样做;

    wafersListBox.DisplayMember = "PropertyNameThatYouWantToShow";
    

    【讨论】:

    • 谢谢,不过我试过了,还是一样
    • 你能展示一下你做了什么吗?此外,查看您尝试显示的对象的代码也会有所帮助。你能用这个更新你的问题吗?
    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    • 2011-04-28
    • 2015-06-26
    • 2010-12-08
    • 1970-01-01
    相关资源
    最近更新 更多