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

时间:2009-05-04 17:37:49

标签: c# .net winforms user-controls

好的我有一个大型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);

这是我HERE回复我之前提出的问题。

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

请参阅我之前提出的问题。 HERE

还可以找到我当前嵌入的表单布局的动态屏幕截图HERE

谢谢

2 个答案:

答案 0 :(得分:3)

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

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

我认为包含插件类型架构的设计可能更适合您拥有的许多移动部件......或者您可以查看Microsoft的模式和实践复合应用程序块(CAB)< / p>

答案 1 :(得分:2)

我会使用UserControl,它认为只是更简单,你可以看到设计师中发生了什么(如果你想),如果你只是将它用作视图,那么Form就有你不会需要的东西在容器内。

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

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