0

我正在寻找一种可以遍历我页面上的所有控件并且只选择某些类型的方法。在这种情况下,我只是在寻找 html 元素 textarea。

我有这个循环...

For Each control As HtmlTextArea In myDiv.Controls.Cast(Of HtmlTextArea)()

    If TypeOf Control Is HtmlTextArea Then
        ...do something...
    End If

Next

但是当它到达 HtmlTextArea 以外的控件时,它总是会失败,说它无法将所述控件转换为 HtmlTextArea。

谢谢

4

2 回答 2

2

您需要使用OfType而不是Cast.

For Each control As HtmlTextArea In myDiv.Controls.OfType(Of HtmlTextArea)()

    'If is no longer needed, control will be HtmlTextArea
    ...do something...

Next

OfType 的MSDN

于 2013-05-21T20:37:45.997 回答
1

如果您想挑出具有特定属性的控件,您还可以在末尾添加一个委托。在这种情况下,它只查看可见的 HtmlTextAreas:

For Each control As HtmlTextArea In myDiv.Controls.OfType(Of HtmlTextArea)().Where(Function(textArea) textArea.Visible = True)

        'Do stuff here
        control.InnerHtml = "I am visible"

Next control
于 2013-05-22T01:04:07.417 回答