【问题标题】:Embedded Form in a control or Form as User Control控件中的嵌入表单或作为用户控件的表单
【发布时间】:2009-05-04 17:37:48
【问题描述】:

好的,我有一个大型 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 找到我当前嵌入式表单布局的屏幕截图。

谢谢

【问题讨论】:

    标签: c# .net winforms user-controls


    【解决方案1】:

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

    您有一个大型、复杂的应用程序,其中有很多部分,据我了解,需要相互通信。我认为您应该问自己的问题不是“表单还是用户控件?”。您应该问自己的问题是,“这是适合此应用的架构吗?”。

    我认为包含插件式架构的设计可能更适合您拥有的许多移动部件...或者您可以看看 Microsoft 的 Patterns and Practices Composite Application Block (CAB)

    【讨论】:

    • 有趣,您能解释一下您所说的“插件式”架构是什么意思吗?您是指抽象表单的功能并具有不同的可互换 UC 来执行这些基本功能吗?
    • 这是一篇关于围绕可扩展架构设计应用程序的精彩文章。 code-magazine.com/Article.aspx?quickid=0801041
    【解决方案2】:

    我会使用 UserControl,它认为那里更简单,你可以看到设计器中发生的事情(如果你愿意的话),Form 有一堆你永远不需要的东西,如果你只是将它用作视图在容器内。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-29
      • 2020-02-09
      • 2013-01-14
      • 2011-01-24
      • 1970-01-01
      • 2012-02-21
      • 1970-01-01
      相关资源
      最近更新 更多