向列表框项添加值。 C#

Adding a value to a listbox item. C#

我有一个列表框,里面有我想要的信息。但是,当用户 select 在特定行上时,我需要发送一个数字。

列表框数据:

Test1
Test2
Test3

例如,当我 select Test1 在我的列表中时,我需要 return 整数 2。我想问是否可以分配数字 2 与 "Test2"

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

是的,ListBox 项是 object 类型,您可以将任何对象分配给它们,因此构建一个 class 如下:

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

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

现在您可以像这样添加列表框项目:

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;
}

否则它将显示 class 的名称而不是您想要的值。

如前所述,您可以指定 listBoxDataSource,然后您可以方便地使用 ListBoxSelectedValue class。但在此之前,您还必须指定列表框的 ValueMemberDisplayMember

我认为最方便的方法是将 Tuple<string, int> 个对象添加到您的列表框中,并将 ValueMember 设置为 "Item2" 并将 DisplayMember 设置为 "Item1",因为 Item1 将是我们的字符串 Test1Item2 将是整数值。

代码示例:

  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 即可访问所选项目的整数值。