我使用Visual Studio 2008
我在表单上有5个列表框,我创建了一个新的类文件 - 称他为“scaner.cs”
scaner.cs - 他看不到“listbox”。
我创建了一个实例
scaner Comp = new scaner(listBox2, listBox1, listBox3, listBox4, listBox5);
在scaner.cs文件中我像这样使用它。
class scaner { public ListBox ls; public ListBox lsE; public ListBox lsIVars; public ListBox lsNumbers; public ListBox lsStrings; public scaner(ListBox ls, ListBox lsE, ListBox lsIVars, ListBox lsNumbers, ListBox lsStrings) { this.ls = ls; this.lsE = lsE; this.lsIVars = lsIVars; this.lsNumbers = lsNumbers; this.lsStrings = lsStrings; } }
我的问题:我怎样才能将这个大代码替换为更“舒适”的方法。
scaner Comp = new scaner(listBox2, listBox1, listBox3, listBox4, listBox5);
如果我有超过5个列表框,那将是非常糟糕的。 我怎么能形成另一个类文件“Listbox's” 谢谢你的回答。
答案 0 :(得分:6)
创建一个字段来存储所有ListBox
个实例,然后将构造函数更改为接受任意数量的实例:
class scaner
{
readonly IEnumerable<ListBox> listBoxes;
public IEnumerable<ListBox> ListBoxes
{
get { return this.listBoxes; }
}
public scaner(params ListBox[] listBoxes)
{
this.listBoxes = listBoxes;
}
}
这将允许您这样做:
scaner Comp = new scaner(listBox1, listBox2);
或者这个:
// Here I am passing 4 ListBoxes - you can pass as many as you wish
// without modifying the source code of your scaner class
scaner Comp = new scaner(listBox1, listBox2, listBox3, listBox4);
答案 1 :(得分:1)
使用List<ListBox>