获取页面上的所有控件

时间:2013-04-22 17:40:57

标签: .net vb.net web controls

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

我希望我能像这样循环每种类型的控件:

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

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

有什么想法吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

我想你只需要在尝试为它赋值之前测试控件是否具有属性。

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

这是更多的资源,而不是简单地将所有想要禁用的控件放在像面板这样的容器中,禁用容器本身。 (这将禁用其中的所有控件)

答案 1 :(得分: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

答案 2 :(得分:1)

要访问所有控件,包括容器中的控件,请使用此

    Dim ctrl As Control = Me.GetNextControl(Me, True)
    Do Until ctrl Is Nothing
        'perform action here
        ctrl = Me.GetNextControl(ctrl, True)
    Loop

答案 3 :(得分:-2)

Try
    For Each Ctrl In Me.Controls
        Ctrl.ReadOnly = myGlobalTrueFalse
    Next
Catch ex As Exception

End Try

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