我有一个列表框,里面有我想要的信息。但是,当用户在特定行上选择时,我需要发送一个数字。
ListBox数据:
Test1
Test2
Test3
例如,当我在列表中选择Test1时,我需要返回整数2。我问是否仍然可以将数字2分配给与"Test2"
关联的
listbox.Items.Add("Name displayed on list", value);
答案 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
。但是在您还必须指定列表框的ValueMember
和DisplayMember
之前。
我认为最方便的方法是将Tuple<string, int>
对象添加到您的列表框中,并将ValueMember
设置为"Item2"
,将DisplayMember
设置为"Item1"
,如{ {1}}将字符串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)
};
即可访问所选项目的整数值。