2014-07-08 202 views
3

我有一个问题隐藏在mdi父窗体中的最大化状态下的mdi子窗体的标题栏。vb.net mdi儿童标题栏不隐藏

下面是我在设计&运行时:我的MDI子窗体的 enter image description here

这是新的():

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 

在设计我已经设置了parent属性IsMdiContainer = True

我哪里错了,或者我错过了什么? 加上这种儿童标题栏上的双按钮真的很奇怪。当我点击其中一个最大化按钮时,我会得到相同的结果: enter image description here

生成的标题栏按钮不能被点击。

谢谢你的帮助!

+0

显然你不喜欢MDI。所以不要使用它。该“子窗体”可以是您所停靠的用户控件。 –

+0

@Hans Passant这可能实际上是最好的事情......因为我永远不会有几个“孩子形式”同时显示,我希望他们总是最大化。感谢您指出我明显看不到的东西! – Joel

+0

我在C#.NET中遇到了同样的问题.. – displayname

回答

1

尝试移动

Me.MaximizeBox = False 

到子窗体的Load事件,这似乎在我的项目工作。

+0

我尝试过单独和/或与其他诸如“我”一起移动。ControlBox = False“,但结果相同。 – Joel

0

为子窗体尝试以下设置。

Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None 
+0

这已经是我在子窗体New()中做的事情了, – Joel

1

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

添加的MenuStrip对MDI的形式,使之不可见的(可见= FALSE)

0

我得到这个由工作:

  1. 将孩子码头,填写
  2. 将孩子WindowState到Normal(这是魔术弹)
  3. 使用Show方法而不是Focus方法