C# - Как установить ComboBox selectedItem от определенного значения?

Я имею, это уже заполнило ComboBox и все, что я хочу сделать, должен установить его на определенный selectedItem знание его значения.

Я пробую это, но ничего не происходит:

comboPublisher.SelectedValue = livre.Editeur;

Рассмотрение того, что я уже реализовал, Равняется (..) метод в моем классе Editeur, этот путь:

  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;

Мой Равняется методу:

 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;
        }
7
задан Amokrane Chentir 5 March 2010 в 01:56
поделиться

4 ответа

Вам необходимо установить Источники данных в случае WinForm / ItemsSource в случае 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";
2
ответ дан 7 December 2019 в 07:44
поделиться

Установите свойство текста.

3
ответ дан 7 December 2019 в 07:44
поделиться

вы создали новую реализацию Equals, которая скрывает реализацию в Object. Попробуйте объявить его с помощью public override bool и посмотрите, поможет ли это.

2
ответ дан 7 December 2019 в 07:44
поделиться

Думаю, что в классе 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;
}
0
ответ дан 7 December 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: