5

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

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

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

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

在此处输入图像描述

4

2 回答 2

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
于 2012-11-01T16:12:58.727 回答
0

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

于 2012-10-10T17:56:52.077 回答