Как заполнить combobox c
Перейти к содержимому

Как заполнить combobox c

  • автор:

Как заполнить combobox c

Кроме прямого добавления элементов в коллекцию Items компонентов ListBox и ComboBox мы также можем использовать механизм привязки данных.

Привязка данных в ListBox и ComboBox реализуется с помощью следующих свойств:

  • DataSource : источник данных — какой-нибудь массив или коллекция объектов
  • DisplayMember : свойство объекта, которое будет использоваться для отображения в ListBox / ComboBox
  • ValueMember : свойство объекта, которое будет использоваться в качестве его значения
public partial class Form1 : Form < public Form1() < InitializeComponent(); Listphones = new List < new Phone < Name="Samsung Galaxy Ace 2", Year=2012>, new Phone < Name="Samsung Galaxy S4", Year=2013>, new Phone < Name="iPhone 6", Year=2014>, new Phone < Name="Microsoft Lumia 435", Year=2015>, new Phone < Name="Xiaomi Mi 5", Year=2015>>; listBox1.DataSource = phones; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; listBox1.SelectedIndexChanged += listBox1_SelectedIndexChanged; > void listBox1_SelectedIndexChanged(object sender, EventArgs e) < // получаем id выделенного объекта int // получаем весь выделенный объект Phone phone = (Phone)listBox1.SelectedItem; MessageBox.Show(id.ToString() + ". " + phone.Name); >> class Phone < public int Id < get; set; >public string Name < get; set; >public int Year < get; set; >>

Итак, на форме у нас есть список ListBox с именем listBox1. В коде имеется класс Phone с тремя свойствами, объекты которого мы хотим выводить в список. В отличие от предыдущих тем эта задача сложнее, так как раньше мы выводили обычные строки, тут же у нас сложные объекты.

Для вывода используем механизм привязки. Сначала устанавливаем список телефонов в качестве источника данных:

listBox1.DataSource = phones;

Затем устанавливаем в качестве отображаемого свойства свойство Name класса Phone, а в качестве свойства значения — свойство Id:

listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id";

Значение отображаемого свойства мы затем увидим в списке. Оно будет представлять каждый отдельный объект Phone.

С помощью же свойства значения, которым является свойство Id, мы можем упростить работу с источником данных. В данном случае оно не играет большой роли. Но если бы мы использовали в качестве источника данных некоторый набор объектов из базы данных, то с помощью id нам было проще удалять, обновлять и взаимодействовать с базой данных.

И теперь если мы выделим какой-то объект, то свойство SelectedItem элементы ListBox будет содержать объект Phone, у которого мы можем получить значения свойств:

Phone phone = (Phone)listBox1.SelectedItem; string name = phone.Name;

А выделенное значение, то есть значение свойства Id выделенного телефона, будет находиться в свойстве SelectedValue .

И если мы запустим приложение, то увидим все отображаемые телефоны:

Привязка в Windows Forms

Все то же самое характерно и для элемента ComboBox. Пусть кроме ListBoxa на форме есть ComboBox:

public partial class Form1 : Form < public Form1() < InitializeComponent(); Listphones = new List < new Phone < Name="Samsung Galaxy Ace 2", Year=2012>, new Phone < Name="Samsung Galaxy S4", Year=2013>, new Phone < Name="iPhone 6", Year=2014>, new Phone < Name="Microsoft Lumia 435", Year=2015>, new Phone < Name="Xiaomi Mi 5", Year=2015>>; comboBox1.DataSource = phones; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "Id"; comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged; listBox1.DisplayMember = "Name"; listBox1.ValueMember = "Id"; > void comboBox1_SelectedIndexChanged(object sender, EventArgs e) < Phone phone = (Phone)comboBox1.SelectedItem; listBox1.Items.Add(phone); >> class Phone < public int Id < get; set; >public string Name < get; set; >public int Year < get; set; >>

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

Привязка даных в ComboBox

В отличие от ListBoxa ComboBox имеет три свойства для обработки выделенного объекта:

  • SelectedItem : выбранный элемент
  • SelectedValue : значение свойства значения, в данном случае свойство Id
  • SelectedText : значение свойства отображение, в данном случае свойство Name класса Phone

Как заполнить combobox c

Элемент ComboBox образует выпадающий список и совмещает функциональность компонентов ListBox и TextBox. Для хранения элементов списка в ComboBox также предназначено свойство Items .

Подобным образом, как и с ListBox, мы можем в окне свойств на свойство Items и нам отобразится окно для добавления элементов ComboBox:

Добавление элементов в 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. Оно может принимать три возможных значения:

Элемент ComboBox в Windows Forms

  • 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 будет ссылаться на выбранный элемент.

ComboBox: основные принципы и применение

Компонент ComboBox (выпадающий список) в различных языках программирования представляет собой элемент управления, который позволяет пользователю выбирать одну опцию из предложенного набора. В данном случае мы рассмотрим примеры кода на языке программирования C# для работы с ComboBox.

Для начала необходимо добавить соответствующий элемент ComboBox на форму. Для этого можно воспользоваться инструментами визуального дизайнера или добавить его программно в коде. Пример размещения ComboBox на форме в C#:

Приведенный код создает экземпляр ComboBox и устанавливает его размер и позицию на форме. Затем выполняется добавление ComboBox на форму с помощью метода Controls.Add().

Далее мы можем добавить элементы в ComboBox. Например, рассмотрим случай, когда мы хотим заполнить ComboBox списком городов:

Каждый элемент добавляется в ComboBox с помощью метода Items.Add(). Метод принимает строку в качестве параметра, представляющую название города. Мы можем добавить столько элементов, сколько необходимо.

Теперь рассмотрим пример получения значения выбранного элемента ComboBox. В C# значение выбранного элемента можно получить через свойство SelectedItem или SelectedValue. Пример получения выбранного элемента ComboBox:

В данном случае мы получаем выбранный элемент ComboBox с помощью свойства SelectedItem и преобразуем его в строку с помощью метода ToString(). Затем выводим выбранный город с помощью MessageBox.

Также возможно задать начальное выбранное значение ComboBox. Для этого можно использовать свойство SelectedIndex или SelectedValue. Пример установки начального выбранного значения ComboBox:

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

Кроме того, ComboBox в C# также предоставляет возможность реагировать на событие выбора элемента пользователем. Например, можно выполнять определенные действия при выборе конкретного элемента. Пример обработки события выбора элемента ComboBox:

Здесь мы подписываемся на событие SelectedIndexChanged и указываем метод ComboBox1_SelectedIndexChanged в качестве обработчика этого события. В обработчике мы получаем выбранный элемент ComboBox и выводим его значение с помощью MessageBox.

В данном ответе было представлено небольшое введение в работу с компонентом ComboBox на языке программирования C#. Рассмотрены примеры добавления элементов, получения выбранного значения, установки начального выбранного элемента и обработки события выбора элемента. Существует множество других возможностей, которые можно реализовать с помощью ComboBox в C#, и их изучение может быть полезным для создания более сложных приложений.

Практическое руководство. Связывание элемента управления ComboBox или ListBox с данными в Windows Forms

Вы можете привязать ComboBox и ListBox к данным для выполнения таких задач, как просмотр данных в базе данных, ввод новых данных или изменение существующих данных.

Привязка элемента управления ComboBox или ListBox

  1. Присвойте свойству DataSource объект источника данных. Возможные источники данных включают привязку BindingSource к данным, таблице данных, представлению данных, набору данных, диспетчеру представлений данных, массиву или любому классу, реализующему интерфейс IList. Дополнительные сведения см. в разделе Источники данных, поддерживаемые Windows Forms.
  2. Если выполняется привязка к таблице, присвойте свойству DisplayMember имя столбца в источнике данных. — или — При привязке к IList, задайте для элемента отображения общедоступное свойство типа в списке.
Private Sub BindComboBox() ComboBox1.DataSource = DataSet1.Tables("Suppliers") ComboBox1.DisplayMember = "ProductName" End Sub 
private void BindComboBox()

Примечание. При привязке к источнику данных, который не реализует интерфейс IBindingList, например ArrayList, данные привязанного элемента управления не будут обновляться при обновлении источника данных. Например, если поле со списком привязано к ArrayList, а данные добавляются в ArrayList, эти новые элементы не будут отображаться в поле со списком. Однако можно принудительно обновить поле со списком, вызвав методы SuspendBinding и ResumeBinding в экземпляре класса BindingContext, к которому привязан элемент управления.

См. также

  • ComboBox
  • ListBox
  • Привязка данных Windows Forms
  • Привязка данных и Windows Forms
  • Создание списка для выбора элементов в Windows Forms

Совместная работа с нами на GitHub

Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *