作为C#中的新秀,我正在寻找一种简单的方法来添加10个名称,每个名称具有不同的值(在本例中为路径)。我进行了搜索,我认为这无法使用C#Windows窗体完成,但我必须更改为WPF?
一定是这样的
listBox1.Items.add(new ListBoxItem("Computer 1", "C:\001"));
listBox1.Items.add(new ListBoxItem("Computer 2", "C:\002"));
但是Windows窗体不支持ListBoxItem吗?
答案 0 :(得分:0)
您可以将任何C#对象添加到列表框Items集合,然后设置ValueMember和DisplayMember属性,以告诉列表框对象中的哪些成员代表该值以及要显示哪些。 / p>
答案 1 :(得分:0)
Windows窗体当然支持它!
您有两个选择:
使用匿名对象:
listBox1.Items.Add(new { Name = "Computer 1", Path = "C:\\001" });
listBox1.Items.Add(new { Name = "Computer 2", Path = "C:\\002" });
哪个显示很难看。
或者通过声明自己的课程:
public class MyListObject
{
public string Name { get; set; }
public string Path { get; set; }
public MyListObject(string name, string path)
{
Path = path;
Name = name;
}
// to nicely display it in List Box
public override string ToString()
{
return Name + " " + Path;
}
}
然后像这样使用它:
listBox1.Items.Add(new MyListObject("Computer 1", "C:\\001"));
listBox1.Items.Add(new MyListObject("Computer 2", "C:\\002"));
继续第二种方法,考虑到@MattWhitfield的回答,将此代码添加到您的应用中以查看其工作方式:
// display Names of objects, this way you don't need to override ToString() method in your class
listBox1.DisplayMember = "Name";
listBox1.Items.Add(new MyListObject("Computer 1", "C:\\001"));
listBox1.Items.Add(new MyListObject("Computer 2", "C:\\002"));
// select first item just for example
listBox1.SelectedIndex = 0;
MessageBox.Show((listBox1.SelectedItem as MyListObject).Path);