| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 596 人关注过本帖, 1 人收藏
标题:[求助]如何关闭前面已打开的多个窗体?
只看楼主 加入收藏
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
结帖率:94.12%
收藏(1)
 问题点数:0 回复次数:8 
[求助]如何关闭前面已打开的多个窗体?

1,在一个工程内,有一个悬浮窗体上面有几个打开窗体的钮,在打开一个新窗体时,如何关闭前面已打开的窗体?(详见附件)
2,有一个窗体用菜单跳转其它窗体会出错,不知何故?
Private Sub Command1_Click() '打开aa窗,应关闭前面已打开的bb,cc,dd窗体,下面代码无法实现
Load aa
aa.Show
End Sub

Private Sub Command2_Click()
Load bb
bb.Show
End Sub

Private Sub Command3_Click()
Load cc
cc.Show
End Sub

Private Sub Command4_Click()
Load dd
dd.Show
End Sub
菜单上的代码:
Private Sub bb_Click() '转换时会出错
Unload bb
Load bb
bb.Show
Unload Me
End Sub

Private Sub cc_Click()
Unload cc
Load cc
cc.Show
Unload Me
End Sub

Private Sub Command3_Click()
Unload dd
Load dd
dd.Show
Unload Me
End Sub

Private Sub dd_Click()
Unload dd
Load dd
dd.Show
Unload Me
End Sub
请在附件上直接更正.

SamCSU88.rar (22.77 KB) [求助]如何关闭前面已打开的多个窗体?


搜索更多相关主题的帖子: 窗体 
2007-03-22 13:16
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 

dim f as form
for each f in forms
if f.name <> "form1" then
unload f
end if
next


我的msn: myfend@
2007-03-22 13:30
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
谢谢purana版主提示,如果有多个不同窗体需要关闭,是否用下面代码:
dim f as form
for each f in forms
if f.name <> "form1" then
unload f
end if
next
dim f as form
for each f in forms
if f.name <> "form2" then
unload f
end if
next
dim f as form
for each f in forms
if f.name <> "form3" then
unload f
end if
next
dim f as form
for each f in forms
if f.name <> "form4" then
unload f
end if
next
.
.
.
.
.
如果是采用上面的代码,是可以关闭前面已以打开的各个窗体,但运行速度很慢,不知要怎样改进才行?
2007-03-22 14:40
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 
dim f as form
for each f in forms
if f.name <> "form1" then
unload f
end if
next

这段代码好像是关掉除了窗体名为form1的所有窗体吧,楼主是不是理解错了

雁无留踪之意,水无取影之心
2007-03-22 14:44
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
收藏
得分:0 
你循环N次了.
在循环里用多个if去判断.学了这么久.还只会单个if判断吗.

我的msn: myfend@
2007-03-22 14:48
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
对不起,用的就是4楼朋友提示的方法,但由于系统上窗体太多,(60-100个),所以运行速度变慢了很多,不知有无更好的办法,
如果是对exe文件,用下面代码来关闭其它窗体就很快,可是现在不是对exe文件,而是对frm文件;
Private Sub Command1_Click()
Dim Ltem As Long
Dim LpID As Long
Dim hLong As Long
Dim strWinName As String
strWinName = "aa"
hLong = FindWindow(vbNullString, strWinName)
If hLong Then
GetWindowThreadProcessId hLong, LpID
Ltem = OpenProcess(PROCESS_TERMINATE, False, LpID)
TerminateProcess Ltem, 0
hLong = 0
End If
strWinName = "bb"
hLong = FindWindow(vbNullString, strWinName)
If hLong Then
GetWindowThreadProcessId hLong, LpID
Ltem = OpenProcess(PROCESS_TERMINATE, False, LpID)
TerminateProcess Ltem, 0
hLong = 0
End If
strWinName = "cde"
hLong = FindWindow(vbNullString, strWinName)
If hLong Then
GetWindowThreadProcessId hLong, LpID
Ltem = OpenProcess(PROCESS_TERMINATE, False, LpID)
TerminateProcess Ltem, 0
hLong = 0
End If
Shell "rundll32.exe url.dll,FileProtocolHandler " & App.Path & "\aa.exe", vbMaximizedFocus
End Sub
2007-03-22 15:02
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 

偶采用了下面的代码可以在悬浮窗体上实现任务栏只停一钮的办法,但在aa窗体上就通不过,哪位能指点一下?
Private Sub Command1_Click()
bb.Hide
cc.Hide
dd.Hide
aa.Show

End Sub

Private Sub Command2_Click()
aa.Hide
cc.Hide
dd.Hide
bb.Show

End Sub

Private Sub Command3_Click()
aa.Hide
bb.Hide
dd.Hide
cc.Show

End Sub

Private Sub Command4_Click()
aa.Hide
bb.Hide
cc.Hide
dd.Show
End Sub

private Sub Form_Load()
SetWindowPos Me.hWnd, hwnd_topmost, 0, 0, 0, 0, Swp_nomove Or Swp_nosize
Move 0, Top '悬浮窗体置前和靠左用的

aa.Hide
Load bb
bb.Hide
Load cc
cc.Hide
Load dd
dd.Hide
Load aa
aa.Show
End Sub

2007-03-22 21:31
jrs123
Rank: 2
等 级:论坛游民
威 望:1
帖 子:627
专家分:14
注 册:2006-9-5
收藏
得分:0 
回复:(jrs123)[求助]如何关闭前面已打开的多个窗体...

采用上面代码,换页速度快了许多(见下面附件),但放在AA页却无法通过,不知何故?

gvanCM2H.rar (22.91 KB) [求助]如何关闭前面已打开的多个窗体?


2007-03-22 21:38
e3bnsd
Rank: 1
等 级:新手上路
帖 子:58
专家分:0
注 册:2007-3-29
收藏
得分:0 
又学了一招.呵呵。
2007-04-10 17:13
快速回复:[求助]如何关闭前面已打开的多个窗体?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033390 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved