如何将字典作为数据源绑定到列表框并覆盖显示成员的默认 ToString() 以显示项目?



我有字典 marketDictionary = new Dictionary((; 是 MarketDetail 包含 4 个值/对象。我试图使用 listbox.datasource 在 MarketDetail 中为每个键显示一个项目。

我可以做得很好,但我想在listbox中显示该项目。它显示的是值 MarketDetail 的键和名称。我知道这些是我在选择项目时需要listbox密钥对。

我使用:

listBox1.SelectionMode = SelectionMode.None;
listBox1.DisplayMember = "key";
listBox1.ValueMember = "value";
listBox1.DataSource = new BindingSource(marketDictionary, null);
listBox1.SelectionMode = SelectionMode.One;

从选择列表中的项目、获取密钥对并执行我需要的操作的角度来看,这非常有效。但是有没有办法为添加到listbox的每个项目或字典中的 value.item 显示我自己的文本。我希望这是有道理的。问罗伯特·

经过大量的阅读和测试,我找到了一个适合我的解决方案。我没有意识到当我在 marketDictionary 中为我的对象构建类时,我应该使用 get/set。 所以我现在将数据源链接到 marketDictionary.Values,我可以引用显示成员中的项目。因此,现在我可以在对象类中添加一个新项以用于显示成员。完善。我学到的另一件事是最后使用数据源行,这停止了选择更改触发。
所以现在我得到了:

public class MarketDetail
{
public string marketId { get; set; }
public string course { get; set; }
}
public void myRaceList()
{
listBox1.DisplayMember = "course";
listBox1.ValueMember = "marketId";
listBox1.DataSource = new BindingSource(marketDictionary.Values, null);
}

最新更新