Как извлечь ссылку на объект из поля со списком? - PullRequest
3 голосов
/ 26 февраля 2010

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

Спасибо

[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 голосов
/ 26 февраля 2010

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

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

РЕДАКТИРОВАТЬ: Обращаясь к вашему коду.
Потеряйте вызов .ToString() при добавлении в ComboBox и следуйте моему совету выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...