代码之家  ›  专栏  ›  技术社区  ›  Oyeme

C#列表框,参数

  •  0
  • Oyeme  · 技术社区  · 14 年前

    作为 中建议的 his answer :

    列表框实例,然后更改 构造函数接受任意

    我试了以下方法

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

    我想打电话给班级扫描员 this.listBoxes.
    (我需要在scaner类中调用listbox1。如何做/调用它?

    3 回复  |  直到 7 年前
        1
  •  3
  •   John Källén    14 年前

    为什么不将列表框数组存储为。。。一个数组?

    public scanner
    {
       private ListBox[] listboxes;
    
       public scanner(params ListBox[] listboxes)
       {
           this.listboxes = listboxes;
       }
    }
    

    现在您可以在调用中访问listbox1 new scanner(listbox1, listbox2) listboxes[0] 在你的扫描器课上。

        2
  •  2
  •   Mark    14 年前

    ListBox 因为每一个都有不同的意义,你可能会对每一个做一些特别的事情。您可能希望传入一个 KeyValuePair<object,ListBox> . 然后用你指定的键去做每一件事。

    params 按特定顺序排列。如果你需要对第一个和第二个做一些非常具体的事情,等等。

        3
  •  0
  •   Jens Granlund    14 年前

    this 财产,像这样的东西。。。

    public class Scanner
    {
        private readonly ListBox[] _listboxes;
    
        public Scanner(params ListBox[] listboxes)
        {
            _listboxes = listboxes;
        }
    
        public ListBox this[int index]
        {
            get
            {
                if(index < 0 || index > _listboxes.Length - 1) 
                    throw new IndexOutOfRangeException();
                return _listboxes[index];
            }
        }
    }
    

    ListBox listbox1 = new ListBox();
    ListBox listbox2 = new ListBox();
    var lst = new Scanner(listbox1, listbox2);
    var lstbox1 = lst[0];