【问题标题】:in windows forms, is it possible to load a form so its located in another form?在 Windows 窗体中,是否可以加载一个窗体,使其位于另一个窗体中?
【发布时间】:2010-09-14 06:26:46
【问题描述】:

可以说我有一个主窗体,它有很多功能。
此表单有一个选项卡控件,其中每个选项卡都包含一些功能。
我想要做的是,当我单击每个选项卡控件按钮时,我想将表单加载到选项卡控件的客户区。
所以不是在主窗体中有很多控件,我将只有一组窗体,每个窗体都有它的控件。
我认为这在管理控件方面会更好,所以我在主窗体上没有 150 个控件。 所以基本上我想在另一个表单上加载一个表单,而不是在单独的视图中显示该表单。
如果表单无法实现,那么我可以使用另一个控件来对控件进行分组并加载到主窗体上吗?
谢谢

【问题讨论】:

  • 您在实施我的解决方案时遇到任何困难吗?
  • @The King:对不起,我忙于其他事情,没有时间测试它。无论如何,我会将您的答案标记为正确,如果我在实施它时遇到任何问题,我将取消标记它。我希望你没问题:)

标签: c# winforms


【解决方案1】:

备选方案 1:

您可以将每个表单设置为用户控件,然后您可以根据需要在主表单的空白面板中加载适当的用户控件。

您应该能够找到一种方法在您的表单和那些用户控件之间进行通信。

备选方案 2:

您可以使用 ShowModal() 方法显示适当的表单,以主表单为父表单,这样用户可以在返回主表单之前完成子表单的工作。

这里的缺点是只要子窗体关闭,用户就无法与主窗体交互。

【讨论】:

    【解决方案2】:

    我建议您查看User Controls

    用户控件带有一个设计器,就像表单一样,并且有一个丰富的事件模型可供利用。与表单不同,它们很容易嵌入到其他控件和表单中。事实上,用户控件将显示在您的工具箱中,以便拖放到另一个表单上。

    至少值得一看。

    【讨论】:

    • 谢谢,但是在我创建了用户控件之后,我如何将它放在主窗体中?我没有在工具箱中看到用户控件。我已经阅读了这篇文章,但没有看到任何相关内容。
    • @Karim - stackoverflow.com/questions/3628163/… 帮助您解决问题
    【解决方案3】:

    以下代码将一个表单添加到另一种表单的面板中。

    在 Form1 中添加此代码

            Form2 ff = new Form2();
            ff.TopLevel = false;
    
            ff.Dock = DockStyle.Fill;
            ff.ControlBox = false;
            ff.Text = "";
    
            panel1.Controls.Add(ff);
            ff.Show();
    

    另一方面是您的面板应该足够大以容纳表单...

    【讨论】:

    • 真是个有趣的想法。我会检查它是否有效,如果有效,我会将其设置为接受的答案。虽然代码非常好 :) 这样做的好处是我不需要将旧代码更改为用户控件,而且我可以将表单用作有时与 ,show() 一起使用的表单,有时用作用户控件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    相关资源
    最近更新 更多