ListBox选择的项目是指变量

时间:2014-03-13 22:10:16

标签: c# listbox

这就是我所做的。

我做了自己的课。

public class Node
{
    public string name;
    public string type;
    public string vm_name;
    public string vm_ip;
    public string vm_hostname;
}

string[] nodes = new string[2];
Node vm1 = new Node();
Node vm2 = new Node();

我设置了Name属性:

vm1.name = "name1";
vm2.name = "name2";

我把这个类型的所有变量都放在一个字符串

nodes[0] = vm1.name;
nodes[1] = vm2.name;

之后我将该数组添加到列表框项目

nodeList.Items.AddRange(nodes);

有没有办法通过从列表框中选择项目来访问变量?

如果有更好的方法,我愿意接受建议。

2 个答案:

答案 0 :(得分:2)

使用DisplayMemberDataSource属性。并创建一个Nodes而不是字符串的数组,

var nodes = new []
 { 
    new Node { name = "name1" },
    new Node { name = "name2" }
 }

nodeList.DisplayMember = "name";
nodeList.DataSource = nodes;

然后,您可以访问SelectedItem并将其转换为Node,如下所示:

private void listBox_SelectedIndexChanged(object sender, EventArgs e)
{
    var selectedNode = nodeList.SelectedItem as Node;

    if (selectedNode != null)
    {
       ...
    }
}

答案 1 :(得分:-1)

将列表框直接绑定到Node实例而不是字符串。

var node = (Node) nodeList.SelectItem;