В конструкторе нужно установить выбранный элемент, например:
foreach ( var item in combobox.Items )
if ( (string)item == obj.StringProperty )
combobox.SelectedItem = item;
Или:
foreach ( var item in combobox.Items )
if ( (int)item == Convert.ToInt32(obj.StringProperty) )
combobox.SelectedItem = item;
Это сбивает с толку, но, несмотря на название, свойство SelectedText
на самом деле не выбранный элемент ... потому что элементы поля со списком являются объектами, а не строками: показанные тексты представляют собой объекты элементов с использованием ToString()
.
Поэтому установка выделенного текста не гарантирует выбора элемент, и мы можем предпочесть установку SelectedItem
.
В дополнение к этим соображениям вы устанавливаете свойство selected text в конструкторе после заполнения поля со списком, и это может вызвать проблемы, потому что оно находится перед формой и нарисованы элементы управления или что-то в этом роде ... то есть, возможно, до того, как методы ToString()
будут вызваны для элементов для подготовки визуального кеша, поэтому установка выделенного текста не может привести к совпадению со списком.
Установка выделенного текста выделяет существующий элемент, если это сделано в загрузке формы или отображаемых событиях.
private void Form_Load(object sender, EventArgs e)
{
combobox.SelectedText = obj.StringProperty;
}
ComboBox. edText не дает мне SelectedText
ComboBox.SelectedText Свойство