【问题标题】:Remove top bar on child form删除子窗体上的顶部栏
【发布时间】:2018-04-28 13:17:33
【问题描述】:

制作一个 MDI 表单,我希望删除所有子表单的顶部栏。在 Visual Studio 和 C# 上工作。知道怎么做吗?我一无所知。

这里是子窗体的属性:

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.WindowState = FormWindowState.Normal
Me.MinimizeBox = False
Me.MaximizeBox = False
Me.ControlBox = False
Me.ShowIcon = False
Me.ShowInTaskbar = False
Me.Dock = DockStyle.Fill

【问题讨论】:

  • 欢迎来到 Stack Overflow!请提供Minimal, Complete, and Verifiable Example。为了有效地帮助您,我们需要重现您描述的问题。
  • vb.net mdi child title bar not hiding 的可能重复项。这个问题是关于 VB.NET,但同样的逻辑也适用于 C#。
  • 您可以尝试将 ControlBox 设置为 false 吗?
  • @AhmedAbdelhameed 我在发帖前看过帖子,没有解决我的问题。
  • @AmineFellous 你试过this answer 吗? AFAICT,它适用于 VB.NET 和 C#。如果它对您不起作用,您需要edit您的问题并准确地说明您尝试了哪些不起作用 .

标签: c#


【解决方案1】:

选项 1:*

正如this answer 中提到的,您可以将MenuStrip control 添加到您的MDI 表单中,将其Visible 属性设置为false,然后就可以使用了。 MDI 子窗体不会显示标题栏只要它们被最大化


选项 2:*

  1. 设置子窗体的MdiParent 属性。
  2. child表单的FormBorderStyle属性设置为FormBorderStyle.None
  3. child 表单的 Dock 属性设置为 DockStyle.Fill注意:这必须在设置 MdiParent 之后出现,否则它将不起作用
  4. 就是这样,您不需要更改任何其他属性(WindowStateControlBox 等)。只需保持上述步骤的顺序即可。

这是一个例子:

private void OpenAndDockMdiChild()
{
    Form2 childForm = new Form2();
    childForm.MdiParent = this;              // This must come **before** setting 
                                             // the `Dock` property.
    childForm.FormBorderStyle = FormBorderStyle.None;
    childForm.Dock = DockStyle.Fill;
    childForm.Show();
}

private void Form1_Load(object sender, EventArgs e)
{
    OpenAndDockMdiChild();
}

结果:

希望对您有所帮助。


*在 Windows 7 和 Windows 10 上使用 .NET 4.5.2 测试。

【讨论】:

  • 谢谢。现在它通过两者来工作。我通过代码更改了属性,而不是表单参数。
  • @AmineFellous,很高兴我能提供帮助。如果还有不清楚的地方,请告诉我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-06
相关资源
最近更新 更多