C# - 如何从特定值设置ComboBox selectedItem?

Amo*_*tir 7 c# combobox

我已经填充了这个已经填充的ComboBox,我想要做的就是将它设置为特定的selectedItem,知道它的值.

我正在尝试这个,但没有任何反应:

comboPublisher.SelectedValue = livre.Editeur;
Run Code Online (Sandbox Code Playgroud)

考虑到我已经在我的Editeur类中实现了Equals(..)方法,这样:

  public  bool Equals(IEditeur editeur)
        {
            return (this.Nom == editeur.Nom);
        }
Run Code Online (Sandbox Code Playgroud)

这是我填充我的ComboBox的方式:

foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
        {
            comboPublisher.Items.Add(editeur);
        }
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

谢谢 !

[编辑]:这似乎适用于:

comboPublisher.SelectedItem = livre.Editeur;
Run Code Online (Sandbox Code Playgroud)

我的Equals方法是:

 public override bool Equals(object obj)
        {
            IEditeur editeur = new Editeur();

            if (!(obj is System.DBNull))
            {
                editeur = (IEditeur)obj;
                return (this.Nom == editeur.Nom);
            }

            return false;
        }
Run Code Online (Sandbox Code Playgroud)

Ano*_*ous 2

DataSources如果是 WinForm,则需要将其设置ItemsSource为 cobobox,如果是 WPF,则需要将其设置为 cobobox,然后才能正确使用 SelectedValue。

[更新] 您应该创建集合来保存这些项目,然后将其设置为数据源(WinForm)/ ItemsSource(WPF),而不是直接将每个项目添加到组合框

foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
{
    //comboPublisher.Items.Add(editeur);
    list.Add(editeur);
}

combobox.ItemsSource = editeur;
combobox.SelectedValuePath = "value_property_name";
combobox.DisplayMemberPath = "display_property_name";
Run Code Online (Sandbox Code Playgroud)