以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  请问为什么添加到Panel里面的窗口,打开窗口就关闭了  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47236)

--  作者:打错潇洒
--  发布时间:2014/3/6 17:11:00
--  请问为什么添加到Panel里面的窗口,打开窗口就关闭了
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)

当使用以上的代码将一个 名字的工具栏的窗口 添加到了 当前名称为Panel2里面 Panel2里面有个按钮要打开其他的窗口 这个时候当前窗口就关闭了




--  作者:Bin
--  发布时间:2014/3/6 17:13:00
--  
上例子. 
--  作者:逛逛
--  发布时间:2014/3/6 17:21:00
--  

1、要加入的窗口类型应该是独立窗口

 

2、PB.BaseControl.Controls.Clear  是清除容器中所有的控件(主要是写例子的时候嫌麻烦,没有遍历隐藏),所以这时候容器中不能有控件,否则都会清除。


--  作者:打错潇洒
--  发布时间:2014/3/6 17:32:00
--  
真的是这样子 谢谢逛逛 可是这样会不会增加 系统负担 重复性添加了控件
--  作者:逛逛
--  发布时间:2014/3/6 17:39:00
--  

应该不会的,一个窗体不管你怎样添加,还是一个窗体,无非是移了一个位置。

 

我想做到窗体复用,都没办法。

 

当然判断窗口是否已打开,是必不可少的。

[此贴子已经被作者于2014-3-6 17:40:26编辑过]

--  作者:打错潇洒
--  发布时间:2014/3/6 19:06:00
--  
模态窗口打开 依然会关闭 有没有解决方案
--  作者:打错潇洒
--  发布时间:2014/3/6 19:19:00
--  
还有 好厉害的闪烁
--  作者:逛逛
--  发布时间:2014/3/6 20:25:00
--  

其实这个案例,初衷是在项目中只使用一个主窗体,通过窗体的控件化来调用整个程序。

 

1、便于项目整体风格的统一

 

2、可以利用项目的锁屏方法来减少闪烁(当然的注意一下技巧,防止死锁。)

 

3、减少设计工作量。(如:员工表编辑窗口只要设计一个,就可以在权限编辑、部门查看等窗口中调用,当然不能同时。)

 

4、可以复制窗口(用模板),如果你将目录树归为一类、表格归为一类,设计工作量会大量减少。

 

对于模式窗口时这样模拟的。(用的还是独立窗口)

 

主窗口中有一个textbox控件,值改变事件写入:如果为10就将主窗口的可用为假,如果为20就将主窗口的可用为真

 

将模拟的模式窗口打开,置顶,textbox控件值为10

 

关闭时,设textbox控件值为20

 

用textbox的的原因是他有事件,同时可视为假时,也可以调用。

[此贴子已经被作者于2014-3-6 20:30:13编辑过]