C# 如何将字典作为数据源绑定到ListBox,并覆盖displayMember的默认ToString()以显示项目?

C# 如何将字典作为数据源绑定到ListBox,并覆盖displayMember的默认ToString()以显示项目?,c#,user-interface,data-binding,listbox,C#,User Interface,Data Binding,Listbox,我有字典市场Dictionary=新字典();WAR MarketDetail包含4个值/对象。我正在尝试使用listbox.datasource为每个键显示MarketDetail中的一个项目 我可以做得很好,但我想在列表框中显示该项。它显示的是value MarketDetail的键和名称。我知道这些是我在选择listbox项时需要的密钥对 即时通讯使用: listBox1.SelectionMode = SelectionMode.None; listBox

我有字典市场Dictionary=新字典();WAR MarketDetail包含4个值/对象。我正在尝试使用listbox.datasource为每个键显示MarketDetail中的一个项目

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

即时通讯使用:

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

从选择列表中的一个项目、获取密钥对和执行我需要的操作的角度来看,这非常有效。但是有没有一种方法可以显示我自己添加到
列表框中的每个项目的文本,或者显示字典中的value.item。我希望这是有道理的。关于罗伯特

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

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);
      }

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

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);
      }

你确定不想切换displaymember和valuemember?我已经试过了,但是没有得到MarketDetail中的值。我仍然可以使用结果。但它在列表框中看起来很难看。难道没有办法继续创建链接并显示我自己的字符串吗?谢谢你的回复。可能重复感谢你的链接。这方面我还不太熟悉。你确定不想切换displaymember和valuemember吗?我已经试过了,但是没有得到MarketDetail中的值。我仍然可以使用结果。但它在列表框中看起来很难看。难道没有办法继续创建链接并显示我自己的字符串吗?谢谢你的回复。可能重复感谢你的链接。这方面我还不太熟悉。关于罗伯托里,我不确定我是否发布了正确的信息。谢谢你的回复。对不起,我不知道我发的是否正确。谢谢你的回复。