【问题标题】:c# winForms open forms inside mainformc# winForms在mainform里面打开表单
【发布时间】:2010-12-27 10:05:07
【问题描述】:

我已经编写了 c# 应用程序,我将发布屏幕截图。在这个主窗体中有 3 个按钮,它们可以打开不同的窗体。现在我决定修改这个应用程序,我想制作一个带有条形菜单的主表单,它将打开这个表单。我使用了这段代码,但我不喜欢或者我做错了什么。我不喜欢,因为父级中有子控件(最小化、最大化、关闭)(请参见第二张图片):

请给我一些建议。 MDI适合这样的工作吗?谢谢!

Sell sell = new Sell();
sell.MdiParent = this;
sell.Dock = DockStyle.Fill;
sell.Show();`

所以我的问题是,当我打开子表单时,父表单没有填写,这是如何让父表单填写子表单

【问题讨论】:

  • 我真的不明白你在这里试图描述什么。你说你不喜欢 MDI,因为每个子窗体都有最小化、最大化和关闭按钮?每当您显示一个新窗体时,无论它是 MDI 子窗体还是单独的浮动窗口,这就是它的工作方式。您能否通过更好地解释您希望实现的最终设计来更新您的问题?
  • 据我所知,我认为页面控件更适合您的需求
  • 感谢您尝试帮助我。卖卖 = 新卖(); sell.MdiParent = 这个;

标签: c# winforms mdi


【解决方案1】:

看到您的最新编辑,我认为您的子表单的内容即使在最大化时也不会填满屏幕的原因是因为您的内容/布局不灵活。

无论您在设计模式中将控件放置在何处,它们在运行时将最终出现在何处,无论您制作的窗口有多大或多小。如果窗口太小而无法包含所有这些,它们要么被遮盖,要么你会看到滚动条。或者,如果窗口比需要的大,您会看到很多空白空间。

解决此问题的方法是设置控件的DockAnchor 属性,这会导致它们展开和压缩以适应其包含表单的布局。您还可以将控件放置在 TableLayoutPanelFlowLayoutPanel 控件中以帮助管理它们的布局。


至于您最初提出的问题,我仍然无法判断您是否反对 MDI 应用程序的外观,或者您是否根本不了解如何正确实现它。你提供的澄清评论实际上让我不太明白了——你发布了一个代码 sn-p,但没有解释它的含义。正如我在评论中所写,没有(非黑客)方式来显示没有最小化、最大化和关闭按钮的表单(将FormBorderStyle 属性设置为“无”可以做到这一点,但我认为这是一个愚蠢的解决方案,它只是允许您对工作使用错误的控件 - 它不会像表单一样运行,用户将无法像表单一样移动它等等。所以为什么使用 em> 一个表格?)。

如果你真的想要一个应用程序窗口在中心改变内容,你应该创建一系列UserControls。您可以使用必要的子控件来布置每个用户控件,就像使用表单一样(使用我上面讨论的流畅布局技术),将每个用户控件添加到主表单,将每个控件的 Dock 属性设置为“填充"(以便它们填充整个查看区域),然后编写代码以简单地换出主窗体查看区域中当前可见的用户控件。与Panel 相比,使用UserControl 的优势在于您可以将所有代码合并到一个控件中,就像使用Form 一样。您可以使用选项卡控件,但如果您不想显示存在多个表单的任何指示(这似乎是您的目标),这也是该工作的错误控件。

如果您真的想在主表单中打开子表单,正如您的问题标题所示,您确实应该使用 MDI。如果您不明白如何这样做,您需要进一步澄清您的问题。

【讨论】:

    【解决方案2】:

    将您的父表单的 MDI 容器 属性设置为 true。会有帮助的。

    【讨论】:

    • 如何有帮助吗?这不是一个特别有用的答案。
    【解决方案3】:

    设置

    FormBorderStyle = None
    

    为您的子表单

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 2014-05-22
      • 1970-01-01
      相关资源
      最近更新 更多