Проблемный comboBox Windows Forms - PullRequest
1 голос
/ 28 мая 2010

Я использую VS2008 C # + Windows Forms. Я не могу понять, почему comboBox не ведет себя так, как должен. В режиме «Дизайн» я добавил в форму comboBox и отредактировал элементы, добавив «A» и «B». Двойной щелчок приводит меня к событию SelectedIndexChanged, которое я редактирую для отображения выделенного текста с помощью MessageBox.

private void comboBoxImageSet_SelectedIndexChanged(object sender, EventArgs e)
{
    MessageBox.Show(comboBoxImageSet.SelectedText);
}

Когда я запускаю и выбираю «A» или «B» в поле со списком, появляется MessageBox, но ничего не пишется. Почему?

Спасибо.

Ответы [ 4 ]

3 голосов
/ 28 мая 2010

Здесь различия между свойствами выбора элемента управления ComboBox.

  1. SelectedIndex ;
  2. SelectedItem ;
  3. SelectedText ;
  4. SelectedValue .

SelectedIndex свойство:

Получает или задает индекс, указывающий текущий выбранный элемент.

Просто указывает индекс выбранного элемента в списке выбора. (Информация предоставлена ​​только для вашего рода информации. =))


Свойство SelectedItem:

Получает или задает текущий выбранный элемент в ComboBox.

SelectedItem представляет элемент, который в настоящее время выбран в соответствии с ListControl из ComboBox. Вот почему вы хотите использовать это, чтобы ответить на ваш вопрос.


Свойство SelectedText:

Получает или задает текст, выделенный в редактируемой части ComboBox.

То есть, когда вы редактируете TextBox часть ComboBox, текст, который может быть выделен при вводе для редактирования, или любой другой тип текст выделения. Это действительно включает любой выбор, сделанный через ListControl часть ComboBox. Например, если для свойства ComboBox.DropDownStyle установлено значение ComboBoxStyle.DropDownList, вы никогда не сможете выделить какой-либо текст в редактируемой части ComboBox. Несмотря на это, вы можете выбрать другой элемент в своем списке. Вот почему это неподходящее свойство использовать для ваших целей.


Свойство SelectedValue:

Получает или задает значение свойства элемента, указанного в свойстве ValueMember.

Используется только при использовании DataBinding вместе со свойством DisplayMember. Например, если вы хотите отобразить имя клиента и выбрать его по идентификатору его базы данных, тогда DisplayMember должен отобразить имя клиента и ValueMember идентификатор. Таким образом, когда вы выбираете одного клиента, SelectedValue изменяется и вызывает событие SelectedValueChanged, унаследованное от ListControl. (Информация предоставлена ​​только для вашего рода информации. =))


2 голосов
/ 28 мая 2010

Свойство SelectedText возвращает текст, отмеченный в поле со списком, а не выбранный элемент. Если выпадающий список доступен для редактирования, вы можете пометить часть текста, а свойство SelectedText вернет помеченный текст. Смотрите здесь .

Вас интересует свойство SelectedItem или свойство SelectedValue .

1 голос
/ 28 мая 2010

ComboBox.SelectedText

Строка, которая представляет текущий выделенный текст в поле со списком. Если DropDownStyle имеет значение DropDownList , возвращаемое значение - пустая строка ( "").

Использовать SelectedItem вместо SelectedText

0 голосов
/ 28 мая 2010

SelectedText

Получает или задает выбранный текст в редактируемой части ComboBox.

То есть он получает текст, который в данный момент помечен.

Вы хотите использовать SelectedItem.ToString().

...