【问题标题】:vb.net mdi child title bar not hidingvb.net mdi子标题栏不隐藏
【发布时间】:2017-01-10 01:01:06
【问题描述】:

我在 .NET 的 mdi 父窗体中隐藏处于最大化状态的 mdi 子窗体的标题栏时遇到问题。

这是我在设计和运行时所拥有的:

这是我的 MDI 子窗体的 new():

Public Sub New(ByRef pParent As Form)
    MyBase.New()
    Me.MdiParent = pParent
    fParent = pParent
    Me.Text = ""
    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.SizeGripStyle = Windows.Forms.SizeGripStyle.Hide
    Me.Dock = DockStyle.Fill
End Sub

我试过FormWindowState.MaximizedDockStyle.None,但结果是一样的。

在父容器上,从一个子容器变为另一个我使用这个函数:

Protected Sub SetActiveScreen(ByVal pChildForm As tWizardForm)
    If pChildForm Is Nothing Then Exit Sub
    If fActiveScreen Is pChildForm Then Exit Sub

    Dim hg As New tHourglass
    Try
       fActiveScreen = pChildForm
       fActiveScreen.Show()
       fActiveScreen.BringToFront()
       For Each aForm In MdiChildren
          If aForm IsNot fActiveScreen Then aForm.Hide()
       Next
       fActiveScreen.Execute()
       UpdateCaption()
    Finally
       hg.Dispose()
    End Try    
End Sub

在设计时我设置了父属性IsMdiContainer = True

我哪里做错了或者我错过了什么? 加上子标题栏上的这种双按钮真的很奇怪。当我单击其中一个最大化按钮时,我最终得到相同的结果: .

无法点击生成的标题栏按钮。

感谢您的帮助!

【问题讨论】:

  • 显然你不喜欢 MDI。所以不要使用它。该“子表单”可以是您停靠的用户控件。
  • @Hans Passant 这实际上可能是最好的做法......因为我永远不会同时显示多个“子表单”,我希望它们始终最大化。感谢您指出我看不到的明显内容!
  • 我在 C# .NET 中遇到了同样的问题 ..
  • @StefanFalk:我遵循 Hans 的建议,将我的 MDI 子项转换为 UserControls(因此它们现在基本上只是面板)并且更容易处理(尤其是我只需要在时间并处于最大化状态)。

标签: .net vb.net mdi


【解决方案1】:

这是您的确切答案。它会解决你的问题。

将 MenuStrip 添加到 MDI 表单并使其不可见(Visible = false)

【讨论】:

    【解决方案2】:

    我得到了这个工作:

    1. 将子 Dock 设置为 Fill
    2. 将子 WindowState 设置为 Normal(这是灵丹妙药)
    3. 使用 Show 方法,而不是 Focus 方法

    【讨论】:

      【解决方案3】:

      尝试移动

       Me.MaximizeBox = False
      

      对于子窗体的 Load 事件,这似乎在我的项目中有效。

      【讨论】:

      • 我试过单独移动它和/或与其他形式如 Me.ControlBox = False 一起移动,但结果是一样的。
      【解决方案4】:

      为子表单尝试以下设置。

        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多