0
Form1에 단추가있는 Form2가 열립니다. Form2의 다른 단추를 클릭하면이 양식이 분할 컨테이너의 Form1 패널에 컨트롤로 추가됩니다. 그런 다음 양식을 닫지 만 분할 된 컨테이너 컨트롤은 여전히 표시됩니다 (Form2). 이제 반대쪽을 수행하고 싶습니다. 분할 컨테이너 컨트롤을 닫고 Form2를 이전과 마찬가지로 일반 창으로 열려면 Form2의 동일한 단추 (이 경우 분할 컨테이너의 패널에있는 컨트롤)에서 다시 엽니 다. 이것이 가능한가 ?패널에 도킹 폼을 누른 다음 도킹 해제하기 동일한 양식에서
내 주된 목적은 분할 컨테이너에 Form2를 도킹하고 Form2의 단추를 사용하여 도킹을 해제하는 것입니다.
편집 :
Public Class Form2
Dim BtnState As Integer
Dim frm As Form2
Private Shared Sub DockFormToPanel(panel As Panel, frm As Form)
frm.TopLevel = False
frm.WindowState = FormWindowState.Maximized
frm.FormBorderStyle = FormBorderStyle.None
frm.Visible = True
Form1.SplitContainer1.Panel2.Controls.Add(frm)
End Sub
Private Shared Sub UndockFormFromPanel(panel As Panel, frm As Form)
If Not Form1.SplitContainer1.Panel2.Controls.Contains(frm) Then Throw New InvalidOperationException()
Form1.SplitContainer1.Panel2.Controls.Remove(frm)
frm.Visible = False
frm.TopLevel = True
frm.WindowState = FormWindowState.Normal
frm.FormBorderStyle = FormBorderStyle.Sizable
frm.Show()
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If BtnState = 0 Then
If frm Is Nothing Then
frm = New Form2
AddHandler frm.FormClosed, Sub() frm = Nothing
End If
DockFormToPanel(Form1.SplitContainer1.Panel2, frm)
BtnState = 1
Else
UndockFormFromPanel(Form1.SplitContainer1.Panel2, frm)
BtnState = 0
End If
End Sub
End Class