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

时间:2010-03-05 01:39:19

标签: c# combobox

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

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

comboPublisher.SelectedValue = livre.Editeur;

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

  public  bool Equals(IEditeur editeur)
        {
            return (this.Nom == editeur.Nom);
        }

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

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

有什么想法吗?

谢谢!

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

comboPublisher.SelectedItem = livre.Editeur;

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

4 个答案:

答案 0 :(得分:3)

设置Text属性。

答案 1 :(得分:2)

如果是WPF,你需要在WinForm / DataSources的情况下设置ItemsSource到你的cobobox然后你可以正确使用SelectedValue。

<强> [更新] 您应该创建集合来保存这些项目,然后将其设置为您的DataSource(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";

答案 2 :(得分:2)

你已经创建了一个新的Equals实现,它隐藏了Object中的一个。尝试使用public override bool声明它,看看是否有帮助。

答案 3 :(得分:0)

认为你还要在Editeur类中实现IEquatable,但是传递一个对象作为参数。像这样的东西。其余的代码都没问题。

public bool Equals(Editeur other)
{
    return (this.Nom == other.Nom);            
}

public override bool Equals(object obj)
{
    if (obj is Editeur)
    {
        return Equals(obj as Editeur);
    }
    return false;
}