1、你只要不dim new就可以了。 dim Frm as form set frm=form2 frm.show 就不会出现问题2、 Dim i as intiger For i = 0 To Forms.Count - 1 Debug.Print Forms(i).Name Next
问题1: 你可以在模块中定义一个变量(或变量数组)public m_bIfOpened as boolean 在自窗体中的load事件中 m_bIfOpened=true 在unload 事件中 m_bIfOpened=false 在按钮事件中 if not m_bIfOpend then dim MyForm as new Form1 MyForm.Show end if
1.public MyForm as object Sub button1_click(send as Object,e as EventArgs) if MyForm =nothing then set MyForm = new Form1 MyForm.Show endif End Sub 2Dim i as intiger For i = 0 To Forms.Count - 1 Debug.Print Forms(i).Name Next================================================================ok?
好象有问题吗!如果form1.show,那么你再show它是会被resume 掉的,除非你使用了dim xform as new xxform,如果有就去掉它就可以了
1: Private Sub Command1_Click() Dim a For Each a In Forms If a.Name = "Form2" Then MsgBox "此form 以存在" Exit Sub End If Next Load Form2 Form2.Show End Sub
使用Forms集合就行了。。 Forms是当前所有已经加载的窗体,你可以用循环在集合中查找,用窗体名字判断。如: Dim frmItem As Form For Each frmItem In Forms Debug.Print frmItem.Name Next frmItem ================================================================ 我是一个兵,来自老百姓。
Private Sub MDIForm_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim a As Form For Each a In Forms .... .... Next End Sub
To: wxyq2000(wxyq)還是有問題 1、這樣不會重復打開同名窗體,但當子窗體關閉後,就再也無法打開子窗體了,而且我也不想用全局變量的方式,這樣太耗資源! 2、MDI窗體沒有Forms這個屬性可用!
例如:Sub button1_click(send as Object,e as EventArgs)
dim MyForm as new Form1
MyForm.Show
End Sub
如果用戶按兩次,則會重復打開,但我又不想在用戶按過一次後禁用此按鈕,我該如何判斷?
a.mdi的queryunload
b.各打开子窗体的queryunload
c.子窗体的unload
d.mdi窗体的unload
所以可以在mdi的queryunload设置
在关闭主窗体时,系统自动先执行每个打开的子窗体的unload和queryunload事件,所以保存或提示工作可以在这两个事件中写。
dim Frm as form
set frm=form2
frm.show
就不会出现问题2、
Dim i as intiger
For i = 0 To Forms.Count - 1
Debug.Print Forms(i).Name
Next
你可以在模块中定义一个变量(或变量数组)public m_bIfOpened as boolean
在自窗体中的load事件中
m_bIfOpened=true
在unload 事件中
m_bIfOpened=false
在按钮事件中
if not m_bIfOpend then
dim MyForm as new Form1
MyForm.Show
end if
对于第二个问题,同意 strongfisher 的说法。
Sub button1_click(send as Object,e as EventArgs)
if MyForm =nothing then
set MyForm = new Form1
MyForm.Show
endif
End Sub
2Dim i as intiger
For i = 0 To Forms.Count - 1
Debug.Print Forms(i).Name
Next================================================================ok?
Dim a
For Each a In Forms
If a.Name = "Form2" Then
MsgBox "此form 以存在"
Exit Sub
End If
Next
Load Form2
Form2.Show
End Sub
Forms是当前所有已经加载的窗体,你可以用循环在集合中查找,用窗体名字判断。如:
Dim frmItem As Form
For Each frmItem In Forms
Debug.Print frmItem.Name
Next frmItem
================================================================
我是一个兵,来自老百姓。
Dim a As Form
For Each a In Forms
....
....
Next
End Sub
1、這樣不會重復打開同名窗體,但當子窗體關閉後,就再也無法打開子窗體了,而且我也不想用全局變量的方式,這樣太耗資源!
2、MDI窗體沒有Forms這個屬性可用!