[英]Splitcontainer flowlayoutpanel or autosized panel (VB.NET)
[英]Close opened form in SplitContainer Panel2 in VB.NET
在VB.NET中需要一些帮助,不确定我在哪里做错了
背景:我有一个使用SplitContainer控件的主窗体。 拆分的PANEL1带有MenuStrip,Panel2用于调用相关的外部表单
代码(请参见下文):函数ResetSplitContainerPanel2
清除Panel2并使用SetFormAttributesToLoadInPanel2
加载新表单
问题:尽管SettingSplitContainer.Panel2.Controls.Clear()
清除了Panel2,但是窗体仍将窗体保持在可编辑模式。 如果我再次调用相同的表单,则可以看到我之前键入的值
预期的输出:在加载新表单时,PANEL2中先前加载的表单应完全处理掉
Private Sub ResetSplitContainerPanel2()
SettingSplitContainer.Panel2.Controls.Clear()
End Sub
Private Function SetFormAttributesToLoadInPanel2(ByVal formNameToChange As Form) As Boolean
On Error GoTo errHandler
formNameToChange.IsMdiContainer = False
formNameToChange.ShowInTaskbar = False
formNameToChange.FormBorderStyle = Windows.Forms.FormBorderStyle.None
formNameToChange.ControlBox = False
formNameToChange.TopLevel = False
formNameToChange.Text = ""
formNameToChange.Visible = True
formNameToChange.Width = SettingSplitContainer.Panel2.Width
formNameToChange.Height = SettingSplitContainer.Panel2.Height
SetFormAttributesToLoadInPanel2 = False
Exit Function
errHandler:
MsgBox("Error Description: " & Err.Description, vbOKOnly, "Error")
SetFormAttributesToLoadInPanel2 = True
Exit Function
End Function
感谢您的帮助
我将尝试使用dispose方法而不是Clear方法:
Dim f As Form = TryCast(SettingSplitContainer.Panel2.Controls(0), Form)
if f IsNot Nothing then
f.Dispose()
Endif
不知道您的窗体是否已作为Panel2.Controls集合中的第一个控件添加到SplitContainer中。 但这只是检查。
可以在此答案中找到此更改的根本原因
您也可以删除Panel2并将该区域留空以查看Form1,并使Form1为MdiContainer = True。
然后针对您要在其中打开的每个表单使用
form2.mdiparent = form1
之后,您只需要使用一个简单的form2.show()。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.