如果.designer.cs在运行时生成?

时间:2015-09-17 08:34:10

标签: c# winforms

我在运行时从另一个父窗体创建子窗体,子窗口包含一些控件,我无法在运行时检测到它,因为它依赖于传递给父窗体的数据?
运行前的子表单没有控件,因此.designer.cs没有控件选项。
因此,如果.designer.cs包含生成的控件的属性,那么在运行时将控件添加到子表单后?以及如何在运行时复制.designer.cs的内容并将其放入文本文件中?

2 个答案:

答案 0 :(得分:0)

此代码将遍历表单并从中获取您喜欢的内容。 如果您要求Control,您将获得表格中的所有内容....

private IEnumerable<T> GetControls<T>(Control.ControlCollection ctrls)
{
    foreach (object ctrl in ctrls)
    {
        foreach (var item in GetControls<T>(((Control)ctrl).Controls))
        {
            yield return item;    
        } 
        if (ctrl is T)
           yield return (T)ctrl;

    }
}

foreach(var txtbox in  GetControls<TextBox>(form.Controls)
{
    txtbox.ReadOnly = false;
}

答案 1 :(得分:0)

.designer.cs由GUI可视化设计器(Visual Studio)生成。它已编译,无法在运行时修改。