向列表框项添加值。 C#

时间:2018-12-03 20:42:33

标签: c# winforms listbox

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

ListBox数据:

Test1
Test2
Test3

例如,当我在列表中选择Test1时,我需要返回整数2。我问是否仍然可以将数字2分配给与"Test2"关联的

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

2 个答案:

答案 0 :(得分:2)

是的,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});

当选择一个列表框项目时,您可以得到其值,如:

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

请注意,由于ListBox使用其项.ToString()方法来创建要显示的文本,因此您必须像这样重写它的ToString()方法:

public override string ToString()
{
    return Name;
}

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

答案 1 :(得分:0)

正如已经建议的那样,您可以在DataSource类中指定listBox,然后可以方便地使用SelectedValue类的ListBox。但是在您还必须指定列表框的ValueMemberDisplayMember之前。

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

代码示例:

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