Добавление значения в элемент списка.C # - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть список с моей желаемой информацией внутри.Однако мне нужно отправить номер, когда пользователь выбирает в определенной строке.

Данные ListBox:

Test1
Test2
Test3

Например, когда я выбираю Test1 в моем списке, мне нужно вернутьцелое число 2. Я спрашиваю, есть ли в любом случае, я могу назначить число 2, которое будет связано с "Test2"

listbox.Items.Add("Name displayed on list", value);

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Как уже предлагалось, вы можете указать DataSource вашего listBox, тогда вы можете удобно использовать SelectedValue класса ListBox.Но прежде чем вам нужно будет также указать ValueMember и DisplayMember для списка.

Наиболее удобным, на мой взгляд, будет добавление Tuple<string, int> объектов в ваш список и настройки ValueMember в "Item2" и DisplayMember до "Item1", поскольку Item1 будет иметь нашу строку Test1, а Item2 будет целочисленным значением.

Пример кода:

  listBox1.ValueMember = "Item2";
  listBox1.DisplayMember = "Item1";
  listBox1.DataSource = new Tuple<string, int>[] {
    new Tuple<string, int>("Test1", 1),
    new Tuple<string, int>("Test2", 2)
  };

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

0 голосов
/ 03 декабря 2018

Да, элементы ListBox имеют тип object, и вы можете назначить им любой объект, поэтому создайте класс следующим образом:

public class ListItem
{
    public string Name {get; set;}
    public int Value {get; set;}

    public override string ToString()
    {
         return Name;
    }
}

Теперь вы можете добавлять элементы ListBox следующим образом:

listbox.Items.Add(new ListItem { Name = "Test1", Value = 2});

Когда выбран элемент ListBox, вы можете получить его значение, например:

var value = ((ListItem)listbox.SelectedItem).Value;

Обратите внимание, что поскольку ListBox использует свой метод Items .ToString() для создания отображаемых текстов, вам необходимо переопределить егоToString() метод, подобный этому:

public override string ToString()
{
    return Name;
}

В противном случае он покажет имя класса вместо желаемого значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...