从csharp中的多个表单获取所有控件

时间:2014-01-24 12:02:31

标签: c# winforms

我希望从多种形式(主要,两种和三种)获得所有控制权 比较控制标记是否等于变量str_name,如果是,则写入 c.Text中str_value的值。

代码:

private static Form[] getformular()
{
    Main main = new Main();
    Two f2 = new Two();
    Three f3 = new Three();
    Form[] form = { main, f2, f3};
    return form;
}

private void initcontrol()
{
    String str_name = "name";
    String str_value = "value";
    foreach(Form f in getformular())
    {
        foreach (Control c in f.Controls)
        {
            if (f != null && c = null)
            {
                if (c.Tag.Equals(str_name))
                {
                   c.Text = str_value;
                }
            }
        }
    }
 }

可以请别人帮帮我吗?

1 个答案:

答案 0 :(得分:0)

首先,如@JonB所述,当前代码中的一些条件检查(if s逻辑)似乎已关闭。

其次,循环遍历Form.Controls只会为您提供直接放置在表单中的所有控件。例如,如果您在表单中放置了选项卡控件(或任何其他容器控件),并且该选项卡控件中有一个文本框,则只能通过循环访问{{1}来获取选项卡控件并找不到该文本框}。您可以使用递归方法解决这个问题,如下所示。

Form.Controls