以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 如果实现菜单的关闭按钮能逐一关闭已打开的窗口 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=71834)
|
-- 作者:wizscn
-- 发布时间:2015/7/18 22:45:00
-- 如果实现菜单的关闭按钮能逐一关闭已打开的窗口
如果在菜单上自己设置一个关闭按钮,点击关闭按钮就能关闭在主窗口中显示在最上面的窗口但左边的菜单不能关闭,如何能实现? 此主题相关图片如下:11122.png
原来我用 Dim fr As WinForm.Form = Forms.ActiveForm fr.Close() 基本可以实现,可以当点一下左边的菜单窗口后,焦点就会到了这个左边的菜单窗口上,再点关闭按钮就会关闭这菜单窗口,不能实现关闭右边主窗口的目的了。
|
-- 作者:大红袍
-- 发布时间:2015/7/19 10:16:00
--
全局代码
Public fs As New List(Of string)
各个窗口afterLoad事件
fs.Add(e.form.Name)
关闭按钮事件
Forms(fs(fs.Count-1)).Close
fs.RemoveAt(fs.Count-1)
|
-- 作者:wizscn
-- 发布时间:2015/7/19 23:43:00
--
这个代码和我想的类似,我是一打开一个窗口就把它写入一个临时数据表里,关闭的时候再把它删除。当打开了多个窗口,假如打开了8个个,而第八个应该在最上面,这样一个一个关闭是没有问题的。可是,我点击标题栏,把第二个窗口切换到最上面,这时点击关闭却是第八个被关闭,因为点击标题切换第二个到最上面的时候没有相应的事件能改变已打开窗口的排序。这又如何解决呢?
|
-- 作者:大红袍
-- 发布时间:2015/7/20 9:33:00
--
去编写SystemIdle事件,
If Forms.ActiveForm IsNot Nothing Then
集合里移除原先的窗口,重新加入窗口
如果用表,就给其赋值一个大的编号
End If
|