передача управления индексатором по ссылке на метод для изменения его свойства

Я сделал программу, которая включает в себя множество элементов управления. Элементы управления будут отображаться и скрываться в соответствии с выбором пользователя. Это означает, что элементы управления перекрывают друг друга во время разработки. теперь я хочу изменить передний и задний цвет всех элементов управления во время разработки. но мне так сложно выполнить эту задачу, потому что все элементы управления накладываются друг на друга. поэтому я решил создать метод цикла for, чтобы перебирать элементы управления в форме, а затем проверять каждый элемент управления по очереди, есть ли в нем элементы управления. когда в элементе управления также есть элементы управления, я вызываю тот же метод и передаю ему элемент управления, чтобы также изменить свойства для подэлементов управления. Метод такой:

void setColor(ref Control con)
        {
            con.BackColor= System.Drawing.Color.Black;
            con.ForeColor=System.Drawing.Color.Yellow;
            if (con.Controls.Count > 0) { setColor(ref con); }
        }

поэтому моя форма включает tabControl с несколькими tabPages. Я повторяю tabPages и хотел передать его этому методу, но получаю ошибку «Индексатор не может быть передан как параметр out или ref». Я передаю его так: setColor(ref tabControl1.Controls[i]);

не могли бы вы помочь мне решить эту проблему?


person Ihsan Ahmed    schedule 20.12.2015    source источник


Ответы (1)


Я решил проблему. Я удалил «ссылку» из метода и написал метод просто следующим образом:

void SetColor(Control con)
    {
        con.BackColor = System.Drawing.Color.Black;
        con.ForeColor = System.Drawing.Color.Yellow;
        if (con.Controls.Count > 0)
        {
            for (int i=0; i<con.Controls.Count;i++)
            SetColor(con.Controls[i]);
        }
    }

и назовите это так: setColor(this.Controls[i]);

person Ihsan Ahmed    schedule 20.12.2015