Я хочу задать пары имени и значения для combobox. Так что я создал класс с именем Item
так:C# Winforms - заданное значение combobox
// Content item for the combo box
private class Item
{
private readonly string Name;
private readonly int Value;
private Item(string _name, int _value)
{
Name = _name; Value = _value;
}
private override string ToString()
{
// Generates the text shown in the combo box
return Name;
}
}
и набор данных, как это:
comboBox1.DataSource = null;
comboBox1.Items.Clear();
// For example get from database continentals.
var gets = _connection.Continentals;
comboBox1.Items.Add(new Item("--- Select a continental. ---", 0));
foreach (var get in gets)
{
comboBox1.Items.Add(new Item(get.name.Length > 40 ? get.name.Substring(0, 37) + "..." : get.name, Convert.ToInt32(get.id)));
}
// It points Africa.
comboBox1.SelectedValue = 3;
Вот результат:
// 1 - Europe
// 2 - Asia
// 3 - Africa
// 4 - North America
// 5 - South America
// 6 - Australia
// 7 - Antartica
В моем примере Африканская континентальная должна быть но это не так. И больше, чем в моей форме редактирования, например, этот код получает из person
ДАННЫЕ таблиц:
var a = _connection.persons.SingleOrDefault(x => x.id == Id);
Когда я код comboBox2.SelectedValue = a.continental
, Африка континентальный должен быть выбран, но это не так. Я не решил проблему.
Мне кажется, что вам нужно SelectedIndex = 3 или SelectedIndex = IndexOf(). –
SelectedItem, Получает или задает текущий выбранный элемент в ComboBox. – bashkan