Methods 通过引用将控件索引器传递给方法以更改其属性

Methods 通过引用将控件索引器传递给方法以更改其属性,methods,properties,controls,ref,indexer,Methods,Properties,Controls,Ref,Indexer,我制作了一个程序,其中包括很多控件。控件将根据用户的选择显示和隐藏。这意味着控件在设计时彼此重叠。现在我想在设计时更改所有控件的前景色和后景色。但是我发现很难完成这个任务,因为所有的控件都相互重叠。所以我决定创建一个for循环方法来迭代表单中的控件,然后依次检查每个控件是否有控件。当控件中也有控件时,我调用相同的方法并将控件传递给它以更改子控件的属性。方法如下: void setColor(ref Control con) { con.BackColor=

我制作了一个程序,其中包括很多控件。控件将根据用户的选择显示和隐藏。这意味着控件在设计时彼此重叠。现在我想在设计时更改所有控件的前景色和后景色。但是我发现很难完成这个任务,因为所有的控件都相互重叠。所以我决定创建一个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); }
        }
因此,我的表单包含带有多个tabPages的tabControl。我迭代tabPages并希望将其传递给此方法,但我出现错误“Indexer不能作为out或ref参数传递” 我这样传递它:
setColor(参考tabControl1.Controls[I])


你能帮我解决这个问题吗?

我已经解决了这个问题。 我已经从方法中删除了“ref”,并简单地编写了如下方法:

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]);
        }
    }
void SetColor(控制图标)
{
con.BackColor=System.Drawing.Color.Black;
con.ForeColor=System.Drawing.Color.Yellow;
如果(con.Controls.Count>0)
{
对于(int i=0;i