1

私はいくつかのコントロールを備えたasp:panelを持っています、以下のようなマークアップ

<asp:panel id="panel1" runat="server">
    <asp:Label runat="server" Text="aaaa"></asp:Label>
    <asp:Label runat="server" Text="bbbb"></asp:Label>
    <asp:Label runat="server" Text="cccc"></asp:Label>
    <asp:TextBox runat="server" ID="txt1"></asp:TextBox>
    <asp:TextBox runat="server" ID="txt2"></asp:TextBox>
    <asp:ImageButton ID="ibtn1" runat="server"/>
    <asp:ImageButton ID="ibtn2" runat="server"/>
</asp:panel>

ここで、すべてのコントロールを無効にしますが、ibtn1とibtn2を有効にします。

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    panel1.Enabled = False
End Sub

Protected Sub Page_PreRender(sender As Object, e As System.EventArgs) Handles Me.PreRender
    ibtn1.Enabled = True
    ibtn2.Enabled = True
End Sub

すべてのコントロールが無効になっています。これはすばらしいことですが、ibtn1とibtn2では無効です。

次に、代わりにこの方法を試しました

Public Sub lDisableAllChildControls(ByRef p As WebControl)
    For Each c As System.Web.UI.WebControls.WebControl In p.Controls
        c.Enabled = False
        'recurse
        lDisableAllChildControls(c)
    Next
End Sub

しかし、それは私にこのエラーを与えました:

タイプ「System.Web.UI.LiteralControl」のオブジェクトをタイプ「System.Web.UI.WebControls.WebControl」にキャストできません

誰かがこれを機能させるためのアイデアを持っていますか?ありがとう!

4

1 に答える 1

0

ラベルが散らかっているため、Controlに置き換えます

 For Each c As System.Web.UI.Control.Control In p.Controls

 Next
于 2012-08-27T10:08:18.147 に答える