【问题标题】:passing control indexer by reference to method to change its property通过引用方法传递控制索引器以更改其属性
【发布时间】:2016-03-26 15:34:53
【问题描述】:

我制作了一个程序,其中包含很多控件。控件将根据用户的选择显示和隐藏。这意味着控件在设计时相互重叠。现在我想在设计时更改所有控件的前景色和背景色。但是我很难完成这项任务,因为所有的控制都相互重叠。所以我决定做一个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 并想将其传递给此方法,但出现错误“索引器可能不会作为 out 或 ref 参数传递” 我是这样通过的:setColor(ref tabControl1.Controls[i]);

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

【问题讨论】:

    标签: methods properties controls ref indexer


    【解决方案1】:

    我已经解决了这个问题。 我已经从方法中删除了“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]);
            }
        }
    

    这样称呼它:setColor(this.Controls[i]);

    【讨论】:

      猜你喜欢
      • 2011-01-23
      • 1970-01-01
      • 1970-01-01
      • 2018-07-09
      • 1970-01-01
      • 2021-05-17
      • 2010-11-27
      相关资源
      最近更新 更多