关于批量隐藏窗体,请高手帮忙,谢谢
目前我程序中使用了很多个窗体。当点击某图片或按钮想弹出一个窗体,其他窗体全部隐藏。目前是这么做的。
如果有10个窗口则
Private Sub 公司_Click(Index As Integer)
form1.Hide
form2.Hide
Form3.Show
Form4.Hide
Form5.Hide
Form6.Hide
Form7.Hide
Form8.Hide
Form9.Hide
Form10.Hide
End Sub
但这样hide好多要写。
有没有批量隐藏的,非常感谢。 --------------------编程问答-------------------- 设计时将每个窗体的Visible都设置为False,需要显示什么窗体设置其Visible=True即可。 --------------------编程问答-------------------- 我这个是有很多窗体,
假设当前窗体为Form1
这时点击Form1里边的一个按钮,弹出窗体Form2,Form1要隐藏。
有没有这样的命令让其他全部窗体都隐藏,只显示Form2 --------------------编程问答--------------------
Function ShowNamedForm(strForm As String) As Form
Dim frmTemp As Form
Set frmTemp = forms.Add(strForm)
frmTemp.Show
Set ShowNamedForm = frmTemp
End Function
Sub ShowNumForm(strForm As String)
Dim J As String
For i = 1 To 10
J = "form" & i
If i = strForm Then
ShowNamedForm (J)
End If
Next i
Me.Hide
End Sub
调用如下:
Private Sub Command1_Click()
ShowNumForm ("2")
End Sub
要显示哪个窗体就改里面的参数就行了 --------------------编程问答-------------------- --------------------编程问答--------------------
如果窗体名字不是form1,form2这些还得修改代码...不爽
vb维护了全局集合forms,里面是已经加载的所有窗体.
Private Sub Command1_Click()
Form2.Show
End Sub
Private Sub Command2_Click()
Form3.Show
End Sub
Private Sub Command3_Click()
Dim a As Form
For Each a In Forms
Debug.Print a.Name
Next
End Sub
直接command3,显示打印了form1
点了command1,点command3,打印了form1,form2..
如果关闭了form2,command3里面就不答应form2了,因为form2卸载了
form2.show和form2.vislble=true是不同的. --------------------编程问答-------------------- Sub ShowNumForm(strForm As String)
断点在这行了,不知道为什么? --------------------编程问答-------------------- 提示编译错误,
语法错误 --------------------编程问答--------------------
没看太懂,求详解 --------------------编程问答--------------------
Function ShowNamedForm(strForm As String) As Form
Dim frmTemp As Form
Set frmTemp = Forms.Add(strForm) '从forms全局集合里获取指定名字的窗体参考,
'这个时候窗体还没有显示,集合里没有这个窗体的,自己给集合里么添加了
'这样才能得到窗体的参考,strForm是个字符串,不是窗体
'可以在监视forms观察变化
frmTemp.Show '显示窗体
Set ShowNamedForm = frmTemp '返回显示的这个窗体的参考.这是个函数...
End Function
Sub ShowNumForm(strForm As String)
Dim j As String, i
'遍历所有窗体,form1-form10,同时也构造了窗体名字
For i = 1 To 10
j = "Form" & i
If i = strForm Then '如果遍历到得窗体是想要显示的窗体,
ShowNamedForm (j) '就去用名字操作这个窗体,j是窗体名字"form" & i
'这里可以直接退出循环了吧? exit for
End If
Next i
Me.Hide '新的窗体都显示了,自己该藏起来了
End Sub
'调用如下:
'VB code
Private Sub Command1_Click()
'显示窗体2,名字是默认名字form2,
ShowNumForm ("2")
End Sub
Private Sub Command2_Click()
Form2.Show
End Sub
都是hide...关闭所有窗体不会造成程序退出,因为找不到活动窗体了,..每个窗体都应该在其退出过程里面显示新的窗体,"父"窗体 --------------------编程问答--------------------
我编译成了
不错
但出了问题:
当i=10000以下数字时,程序很快
但当i=99999999以上时,程序非常慢! --------------------编程问答--------------------
这么多窗体啊...而且是隐藏,不是卸载...那要多少内存呀,系统没死啊?
哥们你太狠了 --------------------编程问答-------------------- 呵呵,原来如北啊 --------------------编程问答-------------------- 最好别用隐藏的方式,不过为了省事也可以这样写,代码简单些。 --------------------编程问答--------------------
做个几十窗体就够多的了,还99999999 --------------------编程问答-------------------- --------------------编程问答-------------------- 不错学习了 --------------------编程问答-------------------- 这结贴有够低的 --------------------编程问答-------------------- 用集合嘛.
如果只要某个窗体显示,其它全隐藏,那就在集合里找,没有就LOAD一个窗体,有就VISABLE.
private sub ShowForm(byval sFormName as string)
dim oForm as form,IsLoad as boolean
for each tmpform in forms
if sformname=oform.name then
oform.visible=true
isload=true
else
oform.visible=false
end if
next
if isload=false then '未加载的情况下,则LOAD
set oform=forms.add(sFormName)
oform.visible=true
end if
end sub
调用:
call showform("Form77")
补充:VB , 基础类