我正在使用此代码在form.load事件上禁用表单[A]
Public Sub disableAll(ByVal root As Control)
For Each root In root.Controls
If Not root.Name.ToString = "cmdLogin" Then
root.Enabled = False
End If
Next
End Sub
使用此代码disable(Me)
它可以按预期工作。
现在的问题是启用它,我有这段代码可以使用表格[B]中的命令按钮来启用表格[A]中的对象
Public Sub enableAll(ByVal root As Control)
For Each root In root.Controls
If Not root.Name.ToString = "cmdLogin" Then
root.Enabled = True
Else
root.Hide()
End If
Next
End Sub
我使用了enableAll(frmMain)
,enableAll(my.Forms.frmMain)
,enableAll(WindowsApplication1.frmMain)
但是它们都不起作用,我没有收到错误消息,并且检查了我的VB.Net 2010的Intermediate Window
,frmMain.Menustrip1.Enabled.Tostring
设置为True,而当我在frmMain中对其进行检查时,已启用属性设置为false,为什么?
答案 0 :(得分:0)
在FormB内,您需要使用当前显示的FormA实例(frmMain)。您使用的是frmMain的默认实例(由MS制作的非常混乱和反oop的设计选择)。
您可以通过查看Application.OpenForms集合来检索显示的frmMain实例
在调用您的 enableAll 之前,请运行此代码
Dim f = Application.OpenForms("frmMain")
If f IsNot Nothing then
enableAll(f)
End If