【问题标题】:Binding empty dictionary to a listbox将空字典绑定到列表框
【发布时间】:2012-06-04 17:55:48
【问题描述】:

当我尝试将字典绑定到列表框时,我得到一个 ArgumentException。无法绑定到新值成员。

我使用以下代码。 谁能告诉我出了什么问题。因为当我在字典中输入 i 行时,它的工作正常......

this.contactpersonenListBox = new Dictionary<int, string>();

lsContactpersonen.DataSource = new BindingSource(this.contactpersonenListBox, null);
lsContactpersonen.DisplayMember = "Value";
lsContactpersonen.ValueMember = "Key";

【问题讨论】:

  • 为什么要将空字典绑定到列表框?
  • 在我的例子中,字典是根据查询结果动态填充的。有时查询可能一无所获。将数据源保留为空字典。结果列表框将显示一个名为“(集合)”的条目。

标签: c# winforms listbox


【解决方案1】:

绑定空字典没有多大意义,因为字典对象不报告任何更改,因此在设置数据源后向字典添加项不会显示在 ListBox 中。

但要摆脱错误,请尝试这样设置:

BindingSource b = new BindingSource();
b.DataSource = this.contactpersonenListBox;
lsContactpersonen.DisplayMember = "Value";
lsContactpersonen.ValueMember = "Key";
lsContactpersonen.DataSource = b;

【讨论】:

  • 这很好,但现在我的列表框设置了一个带有文本(集合)的项目有没有办法摆脱它
  • @WillemT 我没有看到你所看到的。我的列表框是空的。
  • 当我在字典为空时绑定字典时,我的列表框中有一个名为(集合)的项目。一旦我填充字典,该项目就会消失
  • @WillemT 我无法使用我拥有的代码进行复制。如果您使用的代码不同,可能会更新您的帖子。
  • 我使用您在上面发布的代码。我使用一个普通的列表框。我创建了一个在表单加载时执行代码的函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-26
  • 1970-01-01
  • 2016-08-28
  • 2013-08-20
  • 1970-01-01
  • 2012-04-07
  • 1970-01-01
相关资源
最近更新 更多