2010-04-30 2 views
1

Я использую Visual Studio 2008
У меня есть 5 ListBox на форме, я создал новый файл класса -called его «scaner.cs»C#; ListBox это как один объект (контейнер)

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» Спасибо за ответы.

ответ

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); 
+0

+1 спас меня набрав =) –

+0

+1 Удивительный !!!!! – Amsakanna

+0

Andrew Hare Спасибо! – Oyeme

Смежные вопросы