powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как организовать работу с ComboBox для хранения пар (ключ, значение)?
9 сообщений из 9, страница 1 из 1
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876715
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть на форме ComboBox.
Есть набор типа

id | name
----------
1 яблоко
2 груша и т.д.

Задачи:
1) Загнать эти значения в ComboBox так, чтобы у каждого элемента списка хранилось id и name.
2) После выбора зн-я из списка считать id выбранного значения в int переменную.
3) Зная id, например id=2, программно установить в ComboBox элемент с этим id.
4) Зная id, найти элемент в списке и вернуть его name.

Спасибо.
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876743
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexV1,

Нужно было пару раз делать такое, в итоге делал через Ж... всё:
1) Вначале запихивал ID потом "дефис" потом само значение и всё это добавлял в ComboBox. При выборе элемента, отсекал не нужное, получал ID
2) Для ComboBox создал коллекцию, там и хранил значения и ID. После выбора элемента, производился поиск в цикле, и выборка нужного ID.

Хотя думаю, есть намного проще способы
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876778
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В инете есть разные способы, но вот такое есть решение. Правда с "ValueMember" что-то не захотело работать.

Код: vbnet
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.
Public Class Form1

    'Класс для хранения пары ключ-значение и другое
    Public Class FruitElement
        Public Property ID As Integer
        Public Property Value As String

        'Конструктор
        Public Sub New(ID As Integer, Value As String)
            Me.ID = ID
            Me.Value = Value
        End Sub
    End Class

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        'Заполняем
        ComboBox1.Items.Add(New FruitElement(1, "Яблоко"))
        ComboBox1.Items.Add(New FruitElement(2, "Груша"))
        ComboBox1.Items.Add(New FruitElement(3, "Вишня"))
        ComboBox1.Items.Add(New FruitElement(4, "Дыня"))

        'Указываем что отображать, а что будет в значении
        ComboBox1.DisplayMember = "Value"
        ComboBox1.ValueMember = "ID"
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
        Dim selectElement As FruitElement = ComboBox1.SelectedItem
        MessageBox.Show("ID: " & selectElement.ID)
    End Sub
End Class
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876791
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант:

Код: c#
1.
2.
3.
ComboBox1.DataSource= dt; //the data table which contains data
ComboBox1.ValueMember = "id";   // column name which you want in SelectedValue
ComboBox1.DisplayMember = "name"; // column name that you need to display as text
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876795
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
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.
public partial class Form1 : Form
{
  public Form1()
  {
    InitializeComponent();
    var l = new BindingList<Plant>()
    {
      new Plant(1, "яблоко"),
      new Plant(2, "груша"),
      new Plant(3, "тыква"),
      new Plant(4, "лимон"),
      new Plant(5, "апельсин"),
    };
    comboBox1.DataSource = l;
    comboBox1.SelectedItem = l[2];
  }

  private void Button1Click(object sender, System.EventArgs e)
  {
    MessageBox.Show(((Plant) comboBox1.SelectedItem).Id + "");
  }
}

public class Plant
{
  public int Id { get; private set; }
  public string Name { get; private set; }

  public Plant(int id, string name)
  {
    Id = id;
    Name = name;
  }

  public override string ToString()
  {
    return Name;
  }
}
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876917
Фотография VSVLAD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны,

Как раз, пример как у меня)
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876943
Winnipuh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VSVLADСон Веры Павловны,

Как раз, пример как у меня)

так во почему не работало, у него есть

Код: c#
1.
new Plant(3, "тыква"),



А в вашем примере нету!
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38876968
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А как без BindingList программно выбрать элемент списка, зная его id ?

ComboBox1.SelectedValue = id не получается....
...
Рейтинг: 0 / 0
Как организовать работу с ComboBox для хранения пар (ключ, значение)?
    #38878699
AlexV1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно конечно свою функцию написать, которая выбирает текущее зн-е в списке, соответствующие int KeyValue:

Код: c#
1.
2.
3.
4.
5.
6.
7.
public void SetValueToComboBox(ComboBox cbx, int KeyValue)
{
    if (KeyValue == -1) { cbx.SelectedItem = null; return; }
            
    for (int i = 0; i < cbx.Items.Count; i++)
    if (((ListItem)cbx.Items[i]).id == KeyValue) { cbx.SelectedItem = cbx.Items[i]; return; }
}


но мне кажется есть решение попроще. Кто знает, подскажите пожалуйста.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как организовать работу с ComboBox для хранения пар (ключ, значение)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]