【问题标题】:Showing a modeless form's 'title bar' inside the parent form when it's minimized最小化时在父表单内显示无模式表单的“标题栏”
【发布时间】:2014-12-29 23:32:08
【问题描述】:

我正在尝试在我的应用程序中实现一些补充视图,并且我希望对它们进行更好的布局控制。我不知道如何用语言解释我想要的功能是什么,所以我在一些 Photoshop 帮助下完成了它,希望你能帮我实现它。

我的应用程序现在看起来像这样:

(我需要声誉才能发布图片,所以..抱歉链接) http://i59.tinypic.com/2ikv8m1.jpg

当我最小化上一张图片中聚焦的无模式表单时,我希望能够在我的主表单中看到它(并处理它以最大化或关闭),如下图所示(在Photoshop)

http://i58.tinypic.com/1e28go.jpg

希望有人能引导我找到解决方案并感谢您的支持。

编辑:我需要能够将该表单移到我的主表单之外,甚至可以移动到不同的显示器。

【问题讨论】:

  • 图片太小,我看不到任何细节说明你在追求什么
  • 将该窗体的 MdiParent 属性设置为等于主窗体。类似于 form2.MdiParent = form1.
  • 您可以尝试 MDI 表单,它会自动最小化为标题栏,否则将尺寸更改为较小的尺寸(Windows 将根据this question 将其限制为 132 的宽度和 38 的高度)最小化,检查here如何查看表单是否最小化,只需将位置更改为左下角
  • 我已经尝试过你所说的关于 MdiParent 的内容,但没有成功。实际上,第二种形式只是在屏幕上闪烁,输出控制台显示“线程已以代码 0 结束”。
  • @Plutonix 我已将图像上传到另一台主机,它可以让我获得更高的分辨率。希望它有效!

标签: c# forms


【解决方案1】:

如果不想使用 MDI 方式,则将无模式 Form 的 TopLevel 设置为 false,并在显示之前将其添加到主 Forms Controls 集合中:

        Form frm = new Form();
        frm.TopLevel = false;
        this.Controls.Add(frm);
        frm.Show();

*显然将 Form 更改为您的无模式表单的正确类型。

【讨论】:

  • 嗨!我已经尝试过这种方法,但绝对不是我想要的:c!当我最小化表单时,它会直接从屏幕上消失,我无法再次访问它。另外,我正在使用一个新表单,因为我需要能够将该表单移到我的主表单之外,甚至可以移动到不同的监视器。感谢这个方法,我相信它会在未来解决另一个类似的问题哈哈。
  • 如果您需要将该表单移到主表单之外,那么这种方法(和 MDI 方法)是不可行的。您可以在表单顶部添加一个带有按钮的 ToolStrip 以打开无模式表单,然后在它们最小化时简单地隐藏它们。这样用户总是可以点击某些东西来检索表单?
  • 最后,如果没有什么能真正达到我想要达到的目的,这可能是一个有趣的选择..
【解决方案2】:

如果我理解你想要做什么,你想最小化某个表单,但仍然在你的应用程序中看到它(我假设像 Excel 或 Word)

您可以执行类似于 Idle_Mind 所说的操作,但将两者都包含在 Form 而不是父级中。 Form fParent = new Form(); fParent.Dock = DockMode.Fill;//i think this is the syntax. Use this if you want the form to fill to the screen Form fChild = new Form(); fChild.TopLevel = false; fParent.Controls.Add(fChild); fChild.Show();

在这里,它应该最小化到父表单的左下角。然后,您可以将父级调整为您想要的任何大小。

【讨论】:

  • 嗨!也尝试了这种方法,但结果与 Idle_mind 的方法相同。 :(
猜你喜欢
  • 2012-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
相关资源
最近更新 更多