我需要根据全局变量将表单控件(文本框、单选按钮等)的 readOnly 属性设置为readOnly = true 或 false 。
我希望我可以像这样循环遍历每种类型的控件:
For Each Ctrl In Me.Controls
Ctrl.ReadOnly = myGlobalTrueFalse
Next
但这不起作用,因为每个 Ctrl 都没有 ReadOnly 属性。
有任何想法吗?
谢谢!
我想您只需在尝试为其分配值之前测试控件是否具有该属性。
For Each Ctrl In Me.Controls
If Ctrl.ReadOnly Is Not Nothing Then
Ctrl.ReadOnly = myGlobalTrueFalse
End If
Next
这比简单地将所有要禁用的控件(如面板)放入容器中消耗更多的资源,禁用容器本身。(这将禁用其中的所有控件)
To visit all controls, including those in containers, use this
Dim ctrl As Control = Me.GetNextControl(Me, True)
Do Until ctrl Is Nothing
'perform action here
ctrl = Me.GetNextControl(ctrl, True)
Loop
先看 PhaDaPhunks 的回答。
自从我编写任何 VB 代码以来已经有好几年了,但这应该可以。
您可以添加更多循环。
For Each Ctrl In Me.Controls
If Ctrl.ReadOnly Is Not Nothing Then
Ctrl.ReadOnly = myGlobalTrueFalse
End If
For Each Ctrl2 In Ctrl.Controls
If Ctrl2.ReadOnly Is Not Nothing Then
Ctrl2.ReadOnly = myGlobalTrueFalse
End If
Next
Next
Try
For Each Ctrl In Me.Controls
Ctrl.ReadOnly = myGlobalTrueFalse
Next
Catch ex As Exception
End Try
这就是我在发生这种情况时使用的