Как при выборе значения в ComboBox получить его текст?
Как при выборе значения в ComboBox получить его текст? SelectedValue, Selecteditem не помогает. И как добавить несколько значений в ComboBox без добавления одинаковых?
Отслеживать
задан 22 мая 2012 в 19:41
393 3 3 золотых знака 13 13 серебряных знаков 45 45 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
// *** Получение значения при выборе в ComboBox // Подключаем обработчик события - если значение нужно в момент выбора // Обработчик события при выборе значения из списка private void comboBoxInfo_SelectedIndexChanged(object sender, EventArgs e) < // Первый способ MessageBox.Show(comboBoxInfo.SelectedItem.ToString()); // Второй способ MessageBox.Show(comboBoxInfo.Items[comboBoxInfo.SelectedIndex].ToString()); >// *** Добавление группы значений без повторения // Массив новых значений string[] newValue = < "Новое значение 1", "Новое значение 2", "Новое значение 3", "Новое значение 4" >; // Перебираем массив в цикле foreach (string val in newValue) < // Проверяем наличие в списке и если нет - добавляем if (comboBoxInfo.FindString(val) == -1) comboBoxInfo.Items.Add(val); >
В WPF — почти также, только обработчик события будет называться чуть-чуть по другому и проверка наличия элемента в списке будет не FindString, а Items.IndexOf(val). Для WPF — это будет так:
private void comboBoxInfo_SelectionChanged(object sender, SelectionChangedEventArgs e) < // Первый способ MessageBox.Show(comboBoxInfo.SelectedItem.ToString()); // Второй способ MessageBox.Show(comboBoxInfo.Items[comboBoxInfo.SelectedIndex].ToString()); // Массив новых значений string[] newValue = < "Новое значение 1", "Новое значение 2", "Новое значение 3", "Новое значение 4" >; // Перебираем массив в цикле foreach (string val in newValue) < // Проверяем наличие в списке и если нет - добавляем if (comboBoxInfo.Items.IndexOf(val) == -1) comboBoxInfo.Items.Add(val); >>
Как взять значение из combobox c
Элемент ComboBox образует выпадающий список и совмещает функциональность компонентов ListBox и TextBox. Для хранения элементов списка в ComboBox также предназначено свойство Items .
Подобным образом, как и с ListBox, мы можем в окне свойств на свойство Items и нам отобразится окно для добавления элементов ComboBox:

И как и с компонентом ListBox, здесь мы также можем программно управлять элементами.
// добавляем один элемент comboBox1.Items.Add("Парагвай"); // добавляем набор элементов comboBox1.Items.AddRange(new string[] < "Уругвай", "Эквадор" >); // добавляем один элемент на определенную позицию comboBox1.Items.Insert(1, "Боливия");
При добавлении с помощью методов Add / AddRange все новые элементы помещаются в конец списка. Однако если мы зададим у ComboBox свойство Sorted равным true , тогда при добавлении будет автоматически производиться сортировка.
// удаляем один элемент comboBox1.Items.Remove("Аргентина"); // удаляем элемент по индексу comboBox1.Items.RemoveAt(1); // удаляем все элементы comboBox1.Items.Clear();
Мы можем получить элемент по индексу и производить с ним разные действия. Например, изменить его:
comboBox1.Items[0] = "Парагвай";
Настройка оформления ComboBox
С помощью ряда свойств можно настроить стиль оформления компонента. Так, свойство DropDownWidth задает ширину выпадающего списка. С помощью свойства DropDownHeight можно установить высоту выпадающего списка.
Еще одно свойство MaxDropDownItems позволяет задать число видимых элементов списка — от 1 до 100. По умолчанию это число равно 8.
Другое свойство DropDownStyle задает стиль ComboBox. Оно может принимать три возможных значения:

- Dropdown : используется по умолчанию. Мы можем открыть выпадающий список вариантов при вводе значения в текстовое поле или нажав на кнопку со стрелкой в правой части элемента, и нам отобразится собственно выпадающий список, в котором можно выбрать возможный вариант
- DropdownList : чтобы открыть выпадающий список, надо нажать на кнопку со стрелкой в правой стороне элемента
- Simple : ComboBox представляет простое текстовое поле, в котором для перехода между элементами мы можем использовать клавиши клавиатуры вверх/вниз
Событие SelectedIndexChanged
Наиболее важным событием для ComboBox также является событие SelectedIndexChanged , позволяющее отследить выбор элемента в списке:
public partial class Form1 : Form < public Form1() < InitializeComponent(); comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged; >void comboBox1_SelectedIndexChanged(object sender, EventArgs e) < string selectedState = comboBox1.SelectedItem.ToString(); MessageBox.Show(selectedState); >>
Здесь также свойство SelectedItem будет ссылаться на выбранный элемент.
Combo Box. Selected Index Свойство
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает или задает индекс, указывающий текущий выделенный элемент.
public: virtual property int SelectedIndex < int get(); void set(int value); >;
[System.ComponentModel.Browsable(false)] public override int SelectedIndex
[] member this.SelectedIndex : int with get, set
Public Overrides Property SelectedIndex As Integer
Значение свойства
Индекс текущего выделенного элемента (индексация ведется с нуля). Если элемент не выбран, возвращается отрицательное значение (-1).
Исключения
Указанный индекс меньше или равен -2.
Указанный индекс больше или равен числу элементов в поле со списком.
Примеры
В следующем примере кода показано, как использовать FindString метод и SelectedIndex свойство . Этот пример является частью полного примера в обзоре ComboBox класса.
void findButton_Click( Object^ sender, System::EventArgs^ e ) < int index = comboBox1->FindString( textBox2->Text ); comboBox1->SelectedIndex = index; >
private void findButton_Click(object sender, System.EventArgs e)
Private Sub findButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Dim index As Integer index = comboBox1.FindString(textBox2.Text) comboBox1.SelectedIndex = index End Sub
Комментарии
Это свойство указывает отсчитываемый от нуля индекс текущего выбранного элемента в списке полей со списком. При задании нового индекса возникает SelectedIndexChanged событие .
- Если FormattingEnabled имеет значение false , SelectedIndex не будет иметь значение -1, если SelectedValue значение пусто.
- Если FormattingEnabled имеет значение true , SelectedIndex будет задано значение -1, если SelectedValue значение пусто.
Чтобы отменить выбор выбранного элемента, задайте для параметра SelectedIndex значение -1. Для элемента нельзя задать SelectedIndexComboBox значение -1, если элемент является элементом с привязкой к данным.
Как получить текущее значение ComboBox
Вот собственно и весь вопросс. Мне нужно получить именно значение которое выбрал пользователь! :rolleyes:
12 ответов
08 июня 2007 года
38 / / 08.06.2007
ComboBox.Text — Текст в TComboBox
ComboBox.ItemIndex — Номер выбранной строки
08 июня 2007 года
8 / / 18.04.2007
Это все я понимаю, а как узнать этот номер.
У меня всего их два, я должен узнать какой именно он выбрал.
08 июня 2007 года
38 / / 08.06.2007
if ComboBox.ItemIdex = 0 then
Действие 1
else
Действие 2;
Нумерация в TComboBox начинается с 0
08 июня 2007 года
8 / / 18.04.2007
интересный выход, а если б уменя было 50 значений
08 июня 2007 года
319 / / 05.11.2005
. это смотря что тебе нужно сделать.
но если выхода нет и необходимо использовать условия, то case немного сократит текст и улучшит читабельность кода.
08 июня 2007 года
8 / / 18.04.2007
а все было гораздо проще, для того, чтобы получить именно выбраное значение пользователем в ComboBox нужно было написать: ComboBox.Text
08 июня 2007 года
38 / / 08.06.2007
case ComboBox do
0: Действие 1;
1: Действие 2;
.
n: Действие n
else
Действие n + 1;
end;
08 июня 2007 года
319 / / 05.11.2005
всетаки вас наверное клонируют.
ComboBox.Text — Текст в TComboBox
ComboBox.ItemIndex — Номер выбранной строки
. этого наверное было невидно?
08 июня 2007 года
38 / / 08.06.2007
Может ты просто скажешь куду тебе нужно поместить значение, а я скажу как это сделать?
08 июня 2007 года
8 / / 18.04.2007
Хорош, вот вопрос. У меня на форме Edit связан с TUpDown
при входе в программу я синхронизуюсь с ини-файлом, но вот, что получается, что
LivStr:= iniSetings.ReadString(EditTime.Name,’EditTime’,’5′);
EditTime.Text:= LivStr;
Неприсваевается значение Едиту поскольку он связан с числовым значением, а StrToInt() сдесь не получится применить не соответсвие типов, как мне поступить, веть мне нужно получить предыдущее значение, в отладчику смотрю оно есть, только как его установить как оно числовое.
08 июня 2007 года
38 / / 08.06.2007
ReadString(const Section, Ident, Default: string): string;
Прочитать значение переменной типа String раздела Section с именем Ident, и если его нет, то вместо него подставить значение Default.
Причем здесь EditTime.Name? Первый параметр — это имя раздела, а ты в него что пихаеш?
08 июня 2007 года
40 / / 28.04.2007
если действия однотипные и зависящие только от combobox тогда напиши функцию, своего рода шаблон, и обрабатывай изменение текущий стороки