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

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

  • автор:

Разделы справки использовать элемент управления ComboBox? C#

ComboBox — это ASP.NET элемент управления AJAX, который сочетает в себе гибкость TextBox со списком параметров, из которых пользователи могут выбирать.

Цель этого руководства — объяснить элемент управления ComboBox набора элементов управления AJAX. ComboBox работает как сочетание стандартного элемента управления ASP.NET DropDownList и элемента управления TextBox. Вы можете выбрать из существующего списка элементов или ввести новый элемент.

ComboBox похож на расширитель элемента управления Автозавершение, но элементы управления используются в разных сценариях. Расширитель автозаполнения запрашивает веб-службу для получения соответствующих записей. Элемент управления ComboBox, напротив, инициализируется набором элементов. Использование расширителя автозаполнения имеет смысл при работе с большим набором данных (миллионы автозапчастей), а при работе с небольшим набором данных (десятки автозапчастей) используется элемент управления ComboBox.

Выбор из статического списка элементов

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

Мы создадим новую страницу ASP.NET Web Forms и используем элемент управления ComboBox на странице. Добавьте новую страницу ASP.NET в проект и перейдите в режим конструктора.

Если вы хотите использовать элемент управления ComboBox на странице, необходимо добавить на страницу элемент управления ScriptManager. Перетащите элемент управления ScriptManager из-под вкладки Расширения AJAX на поверхность Designer. В верхней части страницы необходимо добавить элемент управления ScriptManager; Его можно добавить сразу под открывающимся тегом формы> на стороне

Затем перетащите элемент управления ComboBox на страницу. Элемент управления ComboBox можно найти на панели элементов вместе с другими элементами управления и расширителями элементов управления AJAX (см. рис. 1).

Простая форма для создания бизнес-карта

Рис. 01. Выбор элемента управления ComboBox на панели элементов (щелкните для просмотра полноразмерного изображения)

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

Выбор из статического списка элементов

Рис. 02. Выбор из статического списка элементов (щелкните для просмотра полноразмерного изображения)

Эти варианты можно добавить в элемент управления ComboBox двумя способами. Сначала выберите параметр задачи «Изменить параметры» при наведении указателя мыши на элемент управления в режиме конструктора и открытии редактора элементов (см. рис. 3).

Редактирование элементов ComboBox

Рис. 03. Редактирование элементов ComboBox(Щелкните для просмотра полноразмерного изображения)

Второй вариант — добавить список элементов между открывающим и закрывающим в представлении источника. Страница в листинге 1 содержит обновленный элемент ComboBox со списком элементов.

Листинг 1. Static.aspx

    protected void btnSubmit_Click(object sender, EventArgs e)  Static   
Describe how spicy you like your food:

Открыв страницу в листинге 1, вы можете выбрать один из существующих параметров в поле ComboBox. Другими словами, ComboBox работает так же, как элемент управления DropDownList.

Однако вы также можете ввести новый вариант (например, Super Spicy), который отсутствует в существующем списке. Таким образом, ComboBox также работает как элемент управления TextBox.

Независимо от того, выбираете ли вы уже существующий элемент или вводите пользовательский элемент, при отправке формы ваш выбор отображается в элементе управления «Метка». При отправке формы обработчик btnSubmit_Click выполняет и обновляет метку (см. рис. 4).

Отображение выбранного элемента

ComboBox поддерживает те же свойства, что и элемент управления DropDownList, для получения выбранного элемента после отправки формы:

  • SelectedItem.Text — отображает значение свойства Text выбранного элемента.
  • SelectedItem.Value — отображает значение свойства Value выбранного элемента или текст, введенный в поле ComboBox.
  • SelectedValue — то же, что и SelectedItem.Value, за исключением того, что это свойство позволяет указать выбранный по умолчанию (начальный) элемент.

Если ввести пользовательский выбор в Поле ComboBox, пользовательский выбор назначается свойствам SelectedItem.Text и SelectedItem.Value.

Выбор списка элементов из базы данных

Список элементов, отображаемых comboBox, можно получить из базы данных. Например, comboBox можно привязать к элементу управления SqlDataSource, objectDataSource, LinqDataSource или EntityDataSource.

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

  1. Создание страницы с именем Movies.aspx
  2. Добавьте элемент управления ScriptManager на страницу, перетащив ScriptManager из вкладки Расширения AJAX на панели элементов на страницу.
  3. Добавьте элемент управления ComboBox на страницу, перетащив comboBox на страницу.
  4. В режиме конструктора наведите указатель мыши на элемент управления ComboBox и выберите параметр Задачи Выбор источника данных (см. рис. 5). Запустится мастер настройки источника данных.
  5. На шаге Выбор источника данных выберите данных.
  6. На шаге Выбор типа источника данных выберите База данных.
  7. На шаге Выбор подключения к данным выберите базу данных (например, MoviesDB.mdf).
  8. На шаге Save the Connection String to the Application Configuration File (Сохранить строку подключения в файле конфигурации приложения ) выберите параметр для сохранения строки подключения.
  9. На шаге Настройка инструкции Select выберите таблицу базы данных Movies и все столбцы.
  10. На шаге Тестовый запрос нажмите кнопку Готово.
  11. На шаге Выбор источника данных выберите столбец Заголовок для отображаемого поля и Столбец Идентификатор для поля данных (см. рисунок).
  12. Нажмите кнопку ОК, чтобы закрыть мастер.

Выбор источника данных

Выбор полей текста и значений данных

Рис. 06. Выбор полей текста и значений данных (щелкните для просмотра полноразмерного изображения)

После выполнения описанных выше действий ComboBox привязывается к элементу управления SqlDataSource, который представляет фильмы из таблицы базы данных Movies. Источник страницы выглядит как листинг 2 (я немного очистил форматирование).

Листинг 2. Movies.aspx

      

Select your favorite movie:

Обратите внимание, что элемент управления ComboBox имеет свойство DataSourceID, указывающее на элемент управления SqlDataSource. При открытии страницы в браузере отображается список фильмов из базы данных (см. рис. 7). Вы можете выбрать фильм из списка или ввести новый фильм, введя его в поле ComboBox.

Отображение списка фильмов

Установка DropDownStyle

Для изменения поведения ComboBox DropDownStyle можно использовать свойство ComboBox DropDownStyle. Это свойство принимает возможные значения:

  • DropDown ( значение по умолчанию). При щелчке стрелки в поле ComboBox отображается раскрывающийся список, и вы можете ввести пользовательское значение.
  • Простой . Элемент ComboBox автоматически отображает раскрывающийся список, и вы можете ввести пользовательское значение.
  • DropDownList — ComboBox работает так же, как элемент управления DropDownList.

Различия между DropDown и Simple заключается в том, что отображается список элементов. В случае Простой список отображается сразу при перемещении фокуса на ComboBox. В случае DropDown необходимо щелкнуть стрелку, чтобы просмотреть список элементов.

Значение DropDownList приводит к тому, что элемент управления ComboBox работает так же, как стандартный элемент управления DropDownList. Однако здесь есть важное различие. В более старых версиях Internet Обозреватель отображаться элемент управления DropDownList с бесконечным индексом Z, поэтому элемент управления будет отображаться перед любым элементом управления, размещенным перед ним. Так как ComboBox отображает html-тег вместо тега HTML , ComboBox правильно учитывает z-упорядочение.

Установка параметра AutoCompleteMode

Используйте свойство ComboBox AutoCompleteMode, чтобы указать, что происходит, когда кто-то вводит текст в поле ComboBox. Это свойство принимает следующие возможные значения:

  • None — (значение по умолчанию). ComboBox не обеспечивает поведение автозавербирования.
  • Предложить . Элемент ComboBox отображает список и выделяет соответствующий элемент в списке (см. рис. 8).
  • Append — Элемент ComboBox не отображает список и добавляет соответствующий элемент из списка в введенный элемент (см. рис. 9).
  • SuggestAppend — comboBox отображает список и добавляет соответствующий элемент из списка к введенной вами (см. рис. 10).

ComboBox делает предложение

Рис. 08. Элемент ComboBox делает предложение (щелкните для просмотра полноразмерного изображения)

ComboBox добавляет соответствующий текст

Рис. 09. Элемент ComboBox добавляет соответствующий текст (щелкните для просмотра полноразмерного изображения)

ComboBox предлагает и добавляет

Рис. 10. Элемент ComboBox предлагает и добавляет (щелкните для просмотра полноразмерного изображения)

Итоги

В этом руководстве вы узнали, как использовать элемент управления ComboBox для отображения фиксированного набора элементов. Мы привязали элемент управления ComboBox как к статическому набору элементов, так и к таблице базы данных. Наконец, вы узнали, как изменить поведение ComboBox, задав его свойства DropDownStyle и AutoCompleteMode.

Как использовать 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 c

Класс ComboBox представляет выпадающий список. Например, определим элемент ComboBox в xaml:

   Tom Bob Sam Alice    

Здесь в качестве элементов выпадающего списка используются строки. И после запуска программы мы сможем выбрать один из четырех элементов:

ComboBox в WPF и C#

В реальности в качестве элементов могут выступать любые объекты, например, элементы TextBlock :

 Tom Bob Sam Alice  

Результат будет тот же самый, что и в предыдущем случае.

Однако также в WPF предоставляет для ComboBoxe специальный тип — ComboBoxItem . ComboBoxItem представляет элемент управления содержимым, в который через свойство Content мы можем поместить другие элементы. Например:

     Tom Microsoft    Bob Google    Sam JetBrains      

Элемент ComboBox и создание выпадающих списков в WPF и C#

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

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

В файле связанного кода C# определим класс Person, который представляет данные, и добавим в список несколько объектов этого класса:

using System.Windows; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; > > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

Отображение сложных объектов в ComboBox в WPF и C#

По умолчанию ComboBox выводит строковое представление объекта. Если необходимо отображать значение определенного свойства, применяется свойство DisplayMemberPath , например, выведем значение свойства Name:

Событие SelectionChanged и обработка выбора объекта

Обрабатывая событие SelectionChanged , мы можем динамически получать выделенный элемент. Для управления выбранными объектами класс ComboBox предоставляет следующие свойства:

  • SelectedItem : выбранный объект списка
  • SelectedValue : выбранное значение
  • SelectedIndex : индекс выбранного объекта в списке

Определим в xaml следующий интерфейс:

Здесь для события SelectionChanged установлен обработчик «peopleComboBox_SelectionChanged», а для вывода выбранного объекта определен элемент TextBlock.

В коде C# определим обработчик события:

using System.Windows; using System.Windows.Controls; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; peopleComboBox.SelectedIndex = 1; // по умолчанию будет выбран второй элемент > private void peopleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < if(peopleComboBox.SelectedItem is Person person) < selectedLabel.Text = person.Name; >> > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

Поскольку здесь элементами списка являются объекты Person, то выбранный объект мы можем привести к типу Person

if(peopleComboBox.SelectedItem is Person person)

И вывести в текстовую метку значение свойства Name:

Обработка выбора элемента и событие SelectionChanged в WPF и C#

Также мы могли бы использовать свойство SelectedValue , которое представляет выбранное значение. Для его использования определим следующий код xaml:

Обратите внимание на свойство SelectedValuePath=»Name» — здесь мы указываем, что свойство «Name» будет выступать в качестве свойства значения.

Для обработки события выбора элемента определим следующий код C#:

using System.Windows; using System.Windows.Controls; namespace MetanitApp; public partial class MainWindow : Window < public MainWindow() < InitializeComponent(); peopleComboBox.ItemsSource = new Person[] < new Person < Name = "Tom", Company = "Microsoft" >, new Person < Name = "Bob", Company = "Google" >, new Person < Name = "Sam", Company = "JetBrains" >>; peopleComboBox.SelectedIndex = 1; // по умолчанию будет выбран второй элемент > private void peopleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) < if(peopleComboBox.SelectedValue is < >) // если не равно null < selectedPerson.Text = peopleComboBox.SelectedValue.ToString(); >// или так // selectedPerson.Text = peopleComboBox.SelectedValue?.ToString(); > > public class Person < public string Name < get; set; >= ""; public string Company < get; set; >= ""; public override string ToString() => $" ()"; >

Здесь проверяем, не равно ли peopleComboBox.SelectedValue null (хотя в примере выше это не имеет смысла, поскольку это свойство представляет строку), и выводим значение этого свойства в текстовый блок. Результат будет аналогичен предыдущему.

Свойства

Установка свойства IsEditable=»True» позволяет вводить в поле списка начальные символы, а затем функция автозаполнения подставит подходящий результат. По умолчанию свойство имеет значение False .

Это свойство работает в комбинации со свойством IsReadOnly : оно указывает, является поле ввода доступным только для чтения. По умолчанию имеет значение False , поэтому если IsEditable=»True» , то мы можем вводить туда произвольный текст.

Еще одно свойство StaysOpenOnEdit при установке в True позволяет сделать список раскрытым на время ввода значений в поле ввода.

Программирование на C, C# и Java

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

ОСТОРОЖНО МОШЕННИКИ! В последнее время в соиальных сетях учстились случаи педложения помощи в написании прогамм от лиц, прикрвающихся сайтом vscode.ru. Мы никогда не пишем первыми и не размещаем никакие материалы в псторонних группах ВК. Для связи с нами используйте исключительно эти контакт: vscoderu@yandex.ru, https://vk.com/vscode

Как добавить в ComboBox пункты. Как использовать ComboBox

ComboBox — это элемент управления Windows Forms, который представляет собой поле со списком.

Как добавить в ComboBox пункты. Как использовать ComboBox

Однако при первым знакомстве с ним не все понимают, как добавить в ComboBox пункты.

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

Как добавить в ComboBox пункты. Как использовать ComboBox

Далее надо нажать на «Изменить элементы…», откроется окно:

Как добавить в ComboBox пункты. Как использовать ComboBox

В него мы и записываем нужные нам пункты, а затем нажимаем «ОК».

Как добавить в ComboBox пункты. Как использовать ComboBox

Теперь при запуске формы мы сможем выбрать в ComboBox’e нужный нам пункт.

Кроме того можно добавлять пункты в самом коде, используя свойство comboBox1.Items.Add().

В скобках мы пишем, какой пункт мы хотим добавить.

Например, можно это делать при загрузке формы, дважды щёлкнув на форму, чтобы перейти в нужный участок кода. Там мы для примера напишем:

private void Form1_Load ( object sender , EventArgs e )
comboBox1 . Items . Add ( «Добавить этот пункт» ) ;
comboBox1 . Items . Add ( «И этот пункт» ) ;

Запускаем программу, и вот, что мы видим:

Как добавить в ComboBox пункты. Как использовать ComboBox

Теперь к нашим имеющимся (или вместо, если не хотите возиться в форме) добавились пункты, указанные в коде.

Но как же нам теперь использовать их?

Доступ к пунктам СomboBox’a в коде можно получить, используя свойство comboBox1.SelectedIndex.

Индексы в СomboBox’e — это и есть пункты его списка, начинающиеся сверху. В C# индексы считаются с нуля, так что самый верхний пункт списка (у нас это vscode.ru) будет иметь индекс 0, ниже его — индекс 1, ещё ниже — индекс 2 и так далее.

Сейчас мы напишем кусочек кода, который покажет действие этого свойства. В данном коде при выборе элементов, чьи индексы написаны (0 и 1), в программе появляется MessageBox с сообщением. В форме мы дважды кликам на СomboBox, а затем пишем:

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

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