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

Как взять значение из combobox c

  • автор:

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

C#: ComboBox и ListBox добавление элементов с определением значения и текста

Блог доброго программиста

Сегодня я решил сделать небольшую заметку о том как добавить в элементы управления формы ComboBox, ListBox и другие схожие, значения в связке (значение — отображаемый текст), как это выглядит, например, в HTML…

Для тех кто не совсем понял о чем идет речь, поясню на примере HTML и элемента управления select. Например у нам нужно сделать список с текстом «Раз», «Два», «Три». При этом работая со списком мы хотим работать не со словами, а с числами. Тогда наш select будет выглядеть так:

  

Таким образом, выбираем «Два», но значение элемента равно «2». Теперь перенесем данную задачу на язык программирования C#. У многих программистов в данном случае возникает небольшой ступор, так как элементы управления ComboBox и ListBox в методе добавления элементов в список принимают только один параметр, который является и значением, и отображаемым текстом. Однако в большинстве случаев, нам нужно разделять текст и значения.
Принцип работы с элементами управления формы типа ComboBox и ListBox похожи, поэтому рассмотрим пример только для ComboBox. Добавим элемент на форму, и в методе загрузки формы пропишем:

private void Form1_Load(object sender, EventArgs e)

Если запустить проект, то мы увидим сообщение «Два», затем откроется форма с выпадающем списком и значениями «раз», «два», «три».
Теперь сделаем так, чтобы при запуске программы, нам показывалось сообщение с цифрой два, при этом внешний вид списка не изменился.
Для этого сначала придется создать новый класс (или структуру). В которой мы будем хранить нужные данные, а именно пару (значение — отображаемый текст):

class SelectData < public readonly int Value; public readonly string Text; public SelectData(int Value, string Text) < this.Value = Value; this.Text = Text; >public override string ToString() < return this.Text; >>

В целом класс примитивен, а ключевую роль играет перегруженный метод ToString(), который определяет как будет отображаться переменная нашего класса при попытке преобразовать ее в строку. Как видно из примера, в данном случае наша переменная превращается в значение атрибута Text.
Атрибут Items элемента СomboBox таков, что в качестве параметра метода Add получает объект, а объект — это база для всего, поэтому наш класс SelectData спокойно подойдет. Прорисовка элементов списка Items на форме, такова, что каждый объект, переводится в строку (тут как раз и работает метод ToString).
Имеем:

private void Form1_Load(object sender, EventArgs e) < this.comboBox1.Items.Add(new SelectData(1, "Раз")); this.comboBox1.Items.Add(new SelectData(2, "Два")); this.comboBox1.Items.Add(new SelectData(3, "Три")); this.comboBox1.SelectedIndex = 1; //this.comboBox1.SelectedItem - это объект, программа не знает что это за объект, поэтому нам нужно //явно указать что это объект класса SelectData, а дальше работать с ним как с классом int selectedValue = ((SelectData)this.comboBox1.SelectedItem).Value; MessageBox.Show(selectedValue.ToString()); >

Вот и все. Теперь при запуске программы мы увидим сообщение с цифрой 2. Хранить в списках можно и более тяжелые сложные объекты, все зависит от Вашей фантазии и конкретной задачи.

Получить значение, которое выбрали в ComboBox

Всем доброго дня. У меня такая проблема.
В combobox из базы данных вносяться значения. В DisplayMember вноситься Name_model, а в ValueMember ID_model
например в комбике можно выбрать:
название
стол (ID-1)
стул (ID-2)
.
При выборе названия в комбике и нажатии кнопки, в лейбл1 должно присвоиться ID_model, а в лейбл2 Name_model название которое выбирали.
ID_model в лейбл 1 присваиваеться, а вот с Name_model проблемы.

1 2 3 4 5 6 7 8 9 10 11 12
string value, index; . private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { index = comboBox1.SelectedValue.ToString(); //value = тут поидеи должно присвоиться название выбранного. } private void button4_Click(object sender, EventArgs e) { label1.Text = value; label2.Text = index;

Поправте код или подскажите где копать(ссылку на анологичную тему)?
Заранее спасибо.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Получить значение из combobox
Не получается вытащить из combobx число. Заполняется она из Базы данных при помощи datasours.

Получить значение, выбранное в ComboBox
Доброго всем времени суток! Обращаюсь за помощью с такой проблемой. На форме имеется ComboBox, в.

Как получить значение из combobox-а?
Всем привет! Начну по порядку.У меня есть список, в нем каждому элементу присвоен свой индекс.Еще.

Как сделать чтобы при выборе в comboBox, выводилось значение в другом comboBox?
Здравствуйте! Есть таблица из 2 столбца (id, name). Как сделать чтобы при выборе из первого.

424 / 318 / 16
Регистрация: 26.09.2009
Сообщений: 844

(ComboBox.SelectedItem as ItemType).Name_Model.ToString();

Регистрация: 17.04.2012
Сообщений: 11

Чет не пойму. Куда и как это вставить. (ComboBox.SelectedItem as ItemType).Name_Model.ToString();
Код у меня почти такой же, разница ток в том, что тут подключается к .xml, а у меня к БД.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace ComboBoxSelect { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string value, index; DataSet ds = new DataSet(); //Создаем источник данных. private void button1_Click(object sender, EventArgs e) { Close(); } private void Form1_Load(object sender, EventArgs e) { //При загрузке загружаем источник данных и связываем с Комбиком. ds.ReadXml("dataset.xml"); comboBox1.DataSource = ds.Tables["Table"].DefaultView; comboBox1.ValueMember = "ID_DOCHEAD"; comboBox1.DisplayMember = "Name_Model"; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { index = comboBox1.SelectedValue.ToString(); value = comboBox1.DisplayMember.ToString(); } private void button2_Click(object sender, EventArgs e) { label1.Text = index; label2.Text = value; //выдает "Name_Model", а хотелось бы текст который выбирали. } } }

А куда и как лепить это (ComboBox.SelectedItem as ItemType).Name_Model.ToString(); вообще не пойму. помогите, кому не лень. ComboBox.SelectedItem как я понимаю это выбор из коллекции? Просто многого не знаю и не до понимаю.

Как считать значение из combobox?

Как записать и считать значение из comboBox в C# WPF
Значения берутся из БД (id, name) Поле name отображается в выпадающем списке, при нажатии на него должен выбраться только id
Как присвоить id, может быть есть что-то типа value или прибиндить, но как?
И как считать значение при выборке

  • Вопрос задан более трёх лет назад
  • 1725 просмотров

Комментировать

Решения вопроса 0

Ответы на вопрос 2

Nipheris

Станислав Макаров @Nipheris Куратор тега C#

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

Ответ написан более трёх лет назад

olifem @olifem Автор вопроса

А можно поточнее?
Мой код

class ComboBoxtItemAdd < public ComboBoxItemAdd(int id, string name) < this.id= id; this.name= name; >public int id < get; set; >public string name < get; set; >> public void List() < string query = "SELECT * FROM table"; classMain.Connection(); SqlCommand command = new SqlCommand(query, classMain.connection); SqlDataReader reader = command.ExecuteReader(); while (reader.Read()) < int string name= Convert.ToString(reader["name"]); // Что сюда написать что бы присвоить строке в комбобоксе полученное значение? >reader.Close(); classMain.connection.Close(); combobox1.SelectedIndex = 0; >

Nipheris

Станислав Макаров @Nipheris Куратор тега C#

olifem покажите пожалуйста XAML-код и код вьюмоделей

olifem @olifem Автор вопроса

Станислав Макаров, C добавлением разобрался, теперь не могу считать данные..

class ComboBoxtItemAdd < public ComboBoxItemAdd(int id, string name) < this.id= id; this.name= name; >public int id < get; set; >public string name < get; set; >> public void List() < string query = "SELECT * FROM table"; classMain.Connection(); SqlCommand command = new SqlCommand(query, classMain.connection); SqlDataReader reader = command.ExecuteReader(); Listresult = new List(); while (reader.Read()) < int string name= Convert.ToString(reader["name"]); result.Add(new CreditItemAdd(id, name)); >reader.Close(); classMain.connection.Close(); combobox1.ItemsSource = result; combobox1s.SelectedIndex = 0; > public void SelectionChanged(object sender, SelectionChangedEventArgs args) < // Вот это не хочет работать MessageBox.Show(Convert.ToString((sender as ComboBox).SelectedValue as ComboboxItem)); //Так тоже не работает MessageBox.Show(Convert.ToString(combobox_Credits.SelectedValue)); >
   "/>   

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

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