以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]窗口居中  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104489)

--  作者:jyh7081
--  发布时间:2017/7/30 16:10:00
--  [求助]窗口居中
在母窗口的panel中打开子窗口(子窗口尺寸较小,总是显示在左上角),怎样使打开的子窗口在panel上居中显示?

Dim PB As WinForm.Panel = e.Form.Controls("Panel4")
Dim Name As String = "窗口1"
Forms(Name).OPEN(-1000,-1500)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Forms(Name).BaseForm.Dock = System.Windows.Forms.DockStyle.Fill
\'PB.BaseControl.Controls.Clear
PB.BaseControl.Controls("panel5").visible = False   \'增加此句
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
Forms("从窗口1").open

--  作者:有点甜
--  发布时间:2017/7/30 16:16:00
--  

你可以控制left、top属性的

 

Forms(Name).BaseForm.left = (pb.width-Forms(Name).BaseForm.width) / 2

Forms(Name).BaseForm.top = (pb.height-Forms(Name).BaseForm.height) / 2


--  作者:jyh7081
--  发布时间:2017/7/30 16:57:00
--  

我把这句Forms(Name).BaseForm.TopLevel = False  注释掉,可以居中,但显示“无法将顶级控件添加到控件。” 代码也看不懂,百度也搜不到

--  作者:有点甜
--  发布时间:2017/7/30 17:24:00
--  

我测试没问题

 

Dim PB As WinForm.Panel = e.Form.Controls("Panel1")
Dim Name As String = "窗口2"
Forms(Name).OPEN(-1000,-1500)
Forms(Name).BaseForm.TopLevel = False
Forms(Name).BaseForm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
PB.BaseControl.Controls.add(Forms(Name).BaseForm)
Forms(Name).BaseForm.left = (pb.width-Forms(Name).BaseForm.width) / 2
Forms(Name).BaseForm.top = (pb.height-Forms(Name).BaseForm.height) / 2