以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  如何在Panel控件中动态地显示不同的Form?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=86188)

--  作者:Hopenight
--  发布时间:2016/6/12 16:52:00
--  如何在Panel控件中动态地显示不同的Form?

请问一下,如何在Panel控件中动态地显示不同的Form.

之前在论坛上看到过实际例子的,但是一时半会找不到了...


--  作者:大红袍
--  发布时间:2016/6/12 18:21:00
--  
Dim PB As WinForm.Panel = e.Form.Controls("Panel2")
Dim Name As String = "工具栏"
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.add(Forms(Name).BaseForm)

 


--  作者:Hopenight
--  发布时间:2016/6/12 21:12:00
--  
我用窗口管理器新增了一个窗口,名字叫“窗口1”。我将第二行的“状态栏”换成了“窗口1” 套用以上的代码,好像有错。 我用MessageBox调试了一下,好像第4~6行的BaseForm是Nothing。 请问一下,我哪里弄错了?
[此贴子已经被作者于2016/6/12 21:12:54编辑过]

--  作者:Hopenight
--  发布时间:2016/6/12 21:36:00
--  
我发现BaseForm不存在的原因了: 我设计的窗口是主窗口,必须得是模式窗口或独立窗口
--  作者:Hopenight
--  发布时间:2016/6/12 21:36:00
--  
谢谢大红袍
--  作者:大红袍
--  发布时间:2016/6/13 0:12:00
--  
以下是引用Hopenight在2016/6/12 21:36:00的发言:
我发现BaseForm不存在的原因了:我设计的窗口是主窗口,必须得是模式窗口或独立窗口

 

必须用独立窗口。


--  作者:Hopenight
--  发布时间:2016/6/13 10:32:00
--  
以下是引用大红袍在2016/6/13 0:12:00的发言:

 

必须用独立窗口。

谢谢老师,受教了.

另外还有点不懂,你给的代码中这一句什么作用?
Forms(Name).OPEN(-1000,-1500)

--  作者:大红袍
--  发布时间:2016/6/13 10:46:00
--  
以下是引用Hopenight在2016/6/13 10:32:00的发言:

谢谢老师,受教了.

另外还有点不懂,你给的代码中这一句什么作用?
Forms(Name).OPEN(-1000,-1500)

 

只有把窗口打开,才可以剪切窗口的内容。

 

这句代码的意思是,在屏幕看不到的位置打开窗口。