C#;列表框作为一个对象(容器)

时间:2010-04-30 12:03:51

标签: c# listbox

我使用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” 谢谢你的回答。

2 个答案:

答案 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>