运行时创建Visual Studio表单设计器源代码

And*_*odi 6 .net c# visual-studio-2010 winforms c#-4.0

我正在重构一个包含很多从运行时信息动态创建的表单的程序.

为了降低系统的复杂程度,我想为每个表单编写单独的代码文件.由于表单很多,我正在考虑一种方法来自动化从运行时收集的数据创建表单源代码文件的过程.

例如,如果我有一个名为EditPeople的表单的运行时实例,我想创建EditPeople.designer.cs的源代码,以便我可以在Windows窗体设计器中编辑该窗体.

你知道是否有一些框架或工具可以简化这项任务吗?

kyn*_*igs 1

我刚刚看到这个问题,为了将来参考,你可以尝试这样的事情:

public static List<Control> GetAllControls(IList ctrls)
{
   List<Control> FormCtrls = new List<Control>();
   foreach (Control ctl in ctrls)
   {
      FormCtrls .Add(ctl);
      List<Control> SubCtrls = GetAllControls(ctl.Controls);
      FormCtrls .AddRange(SubCtrls);
   }
   return FormCtrls;
} 
Run Code Online (Sandbox Code Playgroud)

您可以像这样使用这个函数:

List<Control> ReturnedCtrls = GetAllControls(MyForm.Controls);
Run Code Online (Sandbox Code Playgroud)

当您拥有所有控件的列表时,您可以执行以下操作:

foreach(Control ctrl in ReturnedCtrls)
{
   // Generate Designer Source using ctrl properties
   ctrl.Left
   ctrl.Top
   // etc...
}
Run Code Online (Sandbox Code Playgroud)