私はいくつかのコントロールを備えた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」にキャストできません
誰かがこれを機能させるためのアイデアを持っていますか?ありがとう!