2010-02-26 4 views
3

Я заполняю ComboBox в C# из экземпляра класса. Как получить выбранный элемент, получив ссылку на соответствующий объект? я уже использовал SelectedValue, SelectedItem, SelectedIndex но все они возвращают строковое представление моего объекта ..C# - Как получить ссылку на объект из поля со списком?

Благодарности

[EDIT]

Кусок кода, чтобы показать, что я пытаюсь делать:

заселения часть:

foreach (Business.IAuteur auteur in _livreManager.GetAuthors()) 
      { 
       comboAuthor.Items.Add(auteur); 
      } 

извлечения части, активируется при нажатии на сохранить приклад на:

private void btnSave_Click(object sender, EventArgs e) 
     { 
      Business.IAuteur auteur = new Business.Auteur(); 

      auteur = (Business.IAuteur)comboAuthor.SelectedValue; 

      // A short verification that my item has been correctly 
      // retrieved 
      toolStripStatusLabel1.Text = auteur.Nom; 
     } 

сообщение об ошибке, указывая здесь: toolStripStatusLabel1.Text = auteur.Nom;

Ссылка на объект не установлена ​​в экземпляр объекта.

+1

Пожалуйста, покажите, как вы добавляете элементы в поле со списком. Естественно, если вы добавите к нему строки, вы получите только строки. –

ответ

5

SelectedItem Если возвращается в string объект, то вы заселять свой ComboBox со строками. Если вы переопределяете ToString в своих POCOs, ComboBox автоматически отобразит это значение, возвращая нужный объект с SelectedItem.

Как указано в MSDN, вы также должны переопределить Equals в вашем POCO, чтобы его можно было найти в коллекции предметов, если это необходимо.

EDIT: Адрес вашего кода.
Потеряйте .ToString() звонок при добавлении в ComboBox и следуйте моему совету выше.

+0

Хорошо, сделано. У меня все еще есть сообщение об ошибке, проверьте редактирование! –

+0

Хорошо, он работает, с SelectedItem. В конце концов, не нужно переопределять Equals! Спасибо! –

+1

Если вы когда-либо захотите * установить * SelectedItem, вам нужно будет переопределить Equals. Я имею тенденцию делать это как привычку сейчас, чтобы избежать сюрпризов в будущем. –

Смежные вопросы