仅当WindowState最大化时,MDI子项才可见

时间:2012-10-10 17:30:50

标签: vb.net size zero formborderstyle

我为我的mdi孩子制作了一个自定义边框。 Mdi子表单属性:

  • FormBorderStyle =无
  • Controlbox = False
  • Text =“”
  • WindowState =最大化

首先,当我将Windowstate的属性设置为Normal时,我的mdi孩子将不会显示,我猜它的大小为0;然后是0。 我尝试在Form_Load方法中设置大小,但仍然没有改变。 当我将FormBorderStyle更改为FixedSingle时,我可以看到非常小的形式,只需要足够的空间来双击标题栏。然后表格真的最大化了。

我只是不明白,这一切都让人很困惑。 并且由于windowstate最大化,我无法使用函数在屏幕上拖动表单,因为它认为它已经最大化了....

enter image description here

2 个答案:

答案 0 :(得分:0)

你写过“WindowState = Maximized” 也许正因为如此,当父表格最大化时,您才会看到您的MDI表格 我建议你写“WindowState = Normal”,并在Form_Load中写“MDIForm.Size = ParentForm.Size”或(类似的东西)。

答案 1 :(得分:0)

尝试此代码 - 保证可以正常工作:

Public frmContainer As FormContainer
Public frmChild As FormChild

Public Sub OpenfrmChild()
    If Not IsNothing(frmChild) AndAlso frmChild.Visible = False Then 'This applies after form has been closed
        frmChild = Nothing '(frmChild does not test as nothing after being closed)
        frmChild = New FormChild
        frmChild.MdiParent = frmContainer
        frmChild.Show()
    ElseIf IsNothing(frmChild) Then 'This applies the first time form is opened
        Try
            frmChild = New FormChild
            frmChild.MdiParent = frmContainer
            frmChild.Show()
        Catch ex As Exception
            ErrorMsg(ex.Message() & "Description: " & ex.ToString)
        End Try
    Else 'This applies if form is visible and user clicks the button on FormChild again
        frmChild.BringToFront()
    End If
    frmChild.WindowState = FormWindowState.Maximized
    frmChild.Dock = DockStyle.Fill
 End Sub