C# - как установить ComboBox selectedItem из определенного значения?
у меня уже есть этот заполненный ComboBox, и все, что я хочу сделать, это установить его в определенный selectedItem, зная его значение.
Я пытаюсь, но ничего не происходит:
comboPublisher.SelectedValue = livre.Editeur;
учитывая тот факт, что я уже реализовал Equals(..) метод в моем классе Editeur, таким образом:
public bool Equals(IEditeur editeur)
{
return (this.Nom == editeur.Nom);
}
вот как я заполняю свой ComboBox:
foreach (Business.IEditeur editeur in _livreManager.GetPublishers())
{
comboPublisher.Items.Add(editeur);
}
есть идеи ?
спасибо !
[EDIT]: кажется, это работает с :
comboPublisher.SelectedItem = livre.Editeur;
мой метод 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 ответов
необходимо указать DataSources
в случае WinForm / ItemsSource
в случае WPF для вашего cobobox вы можете использовать SelectedValue правильно.
[обновление] Вместо того, чтобы добавлять каждый элемент в combobox напрямую, вы должны создать коллекцию для хранения этих элементов, а затем установить ее в качестве источника данных (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";
вы создали новую реализацию Equals, которая скрывает ее в объекте. Попробуйте объявить его с помощью public override bool
и посмотрим, поможет ли это.
in думаю, что вы также должны реализовать IEquatable в классе Editeur, но передать объект в качестве аргумента. Что-то вроде этого. Остальная часть кода в порядке.
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;
}