【问题标题】:MDI child is only visible when WindowState is MaximizedMDI 子仅在 WindowState 最大化时可见
【发布时间】:2012-10-01 06:14:00
【问题描述】:

我为我的 mdi 孩子制作了自定义边框。 Mdi 子窗体属性:

  • FormBorderStyle = 无
  • 控制框 = 假
  • 文本 = ""
  • WindowState = 最大化

首先,当我将 Windowsstate 的属性设置为 Normal 时,我的 mdi child 不会出现,我猜它的大小为 0;0。 我尝试在 Form_Load 方法中设置大小,但仍然没有任何改变。 当我将 FormBorderStyle 更改为 FixedSingle 时,我可以看到非常小的表单,只有足够的空间来双击标题栏。然后表格真的最大化了。

我只是不明白了,这一切都非常令人困惑。 而且由于窗口状态已最大化,我无法使用函数在屏幕上拖动表单,因为它认为它已最大化....

【问题讨论】:

  • 这些不是 MDI 子窗口的有效属性,它必须具有可调整大小的边框。 Winforms 忘记抛出异常。

标签: vb.net size zero formborderstyle


【解决方案1】:

试试这个代码 - 保证工作:

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

【讨论】:

    【解决方案2】:

    您已经编写了“WindowState = Maximized”。
    也许正因为如此,您只能在父表单最大化时看到您的 MDI 表单。
    我建议你写 "WindowState = Normal" ,并在 Form_Load 中写 "MDIForm.Size=ParentForm.Size" 或(类似的东西)。

    【讨论】:

      猜你喜欢
      • 2011-10-30
      • 1970-01-01
      • 2012-02-04
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多