控件中的嵌入式窗体或用户控件的窗体

好吧,我有一个大型CRUD应用程序,它使用带有嵌入在其中的表单的选项卡,如此 – >

public static void ShowFormInContainerControl(Control ctl, Form frm) { frm.TopLevel = false; frm.FormBorderStyle = FormBorderStyle.None; frm.Dock = DockStyle.Fill; frm.Visible = true; ctl.Controls.Add(frm); } 

然后我在父表单的表单加载事件中调用以下 – >

  // Embedd the child form in the this Parent WinFormCustomHandling.ShowFormInContainerControl(pnlModuleHost, _frmWWCModuleHost); 

这是我在这里回答我之前的问题。

随着我的进步,我不断得到这样的感觉,即多层嵌入式表格是等待发生的灾难,用户控件不断弹出。 有人能为我提供一些关于使用用户控件和嵌入表单的具体建议吗?

请参阅我之前的问题,了解这个问题的灵感。 这里

此外,还可以在此处找到我当前嵌入的表单布局的动态屏幕截图。

谢谢

我会使用UserControl,它认为只是更简单,你可以看到设计师中发生了什么(如果你想),如果你只是想把它作为容器中的一个视图使用它,那么你将永远不需要它。

将此与您的方法进行比较:

 public static void DockControl(this Control control, UserControl userControl) { userControl.Dock = DockStyle.Fill; control.Controls.Clear(); control.Controls.Add(userControl); } 

我的观点是,你选择哪个方向可能无关紧要。 我会选择使用用户控件,因为它是更标准的方法,可以让您在未来获得更大的灵活性。 例如,如果您的客户来找您并说他们希望将两个标签组合到一个标签中,该怎么办? 用户控件允许您将这两个控件放到单个选项卡上,而不需要将控件组合成单个表单,然后在需求再次更改时将其更改回下个月。

你有一个庞大而复杂的应用程序,根据我的理解,它需要相互通信。 我认为你应该问自己的问题不是“表格或用户控制?”。 你应该问自己的问题是,“这个应用程序是否是正确的架构?”。

我认为采用插件式架构的设计可能更适合您拥有的许多移动部件……或者您可以查看Microsoft的模式和实践复合应用程序块( CAB )