0

我需要根据全局变量将表单控件(文本框、单选按钮等)的 readOnly 属性设置为readOnly = true 或 false 。

我希望我可以像这样循环遍历每种类型的控件:

        For Each Ctrl In Me.Controls
            Ctrl.ReadOnly = myGlobalTrueFalse
        Next

但这不起作用,因为每个 Ctrl 都没有 ReadOnly 属性。

有任何想法吗?

谢谢!

4

4 回答 4

2

我想您只需在尝试为其分配值之前测试控件是否具有该属性。

For Each Ctrl In Me.Controls
 If Ctrl.ReadOnly Is Not Nothing Then
    Ctrl.ReadOnly = myGlobalTrueFalse
 End If
Next

这比简单地将所有要禁用的控件(如面板)放入容器中消耗更多的资源,禁用容器本身。(这将禁用其中的所有控件)

于 2013-04-22T17:48:22.953 回答
1

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
于 2013-04-22T18:48:25.917 回答
1

先看 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
于 2013-04-22T17:50:04.143 回答
-2
Try
    For Each Ctrl In Me.Controls
        Ctrl.ReadOnly = myGlobalTrueFalse
    Next
Catch ex As Exception

End Try

这就是我在发生这种情况时使用的

于 2013-04-22T17:43:40.827 回答