【问题标题】:Bind Winforms ListBox collection to List<object>将 Winforms ListBox 集合绑定到 List<object>
【发布时间】:2015-09-01 02:22:59
【问题描述】:

我有一个包含我的客户详细信息的课程。

class CustomerData : INotifyPropertyChanged
{
    private string _Name;
    public string Name 
    { 
        get 
        { return _Name } 
        set 
        {
            _Name = value;
            OnPropertyChanged("Name");
        }
    }

   // Lots of other properties configured.
}

我还有一个CustomerData 值列表List&lt;CustomerData&gt; MyData;

我目前 databinding 个人 CustomerData 反对 textboxes 在下面的工作正常。

this.NameTxtBox.DataBindings.Add("Text", MyCustomer, "Name", false, DataSourceUpdateMode.OnPropertyChanged);

我正在努力寻找一种方法将列表MyData 中的每个对象绑定到ListBox

我想让 MyData 列表中的每个对象显示在显示名称的 ListBox 中。

我尝试将DataSource 设置为等于MyData 列表并将DisplayMember 设置为“名称”,但是当我将项目添加到MyData 列表时listbox 不会更新。

关于如何做到这一点的任何想法?

【问题讨论】:

  • 你检查过这个吗:stackoverflow.com/questions/2675067/…
  • 是的,我试过了。但是,当我将项目添加到列表时,列表框不会更新。
  • winforms 不使用观察系统。因此,您必须将对象推送到列表框本身。
  • 啊找到了。我需要使用 BindingList 而不是 List。这允许 ListBox 在集合被修改时更新。

标签: c# winforms data-binding listbox


【解决方案1】:

我发现List&lt;T&gt; 在修改绑定列表时不允许更新 ListBox。 为了让它工作,你需要使用BindingList&lt;T&gt;

BindingList<CustomerData> MyData = new BindingList<CustomerData>();

MyListBox.DataSource = MyData;
MyListBox.DisplayMember = "Name";

MyData.Add(new CustomerData(){ Name = "Jimmy" } ); //<-- This causes the ListBox to update with the new entry Jimmy.

【讨论】:

    猜你喜欢
    • 2011-02-10
    • 2016-04-18
    • 2020-07-20
    • 2012-06-15
    • 2013-05-03
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    相关资源
    最近更新 更多