把它們放在一個容器控件像ASP.NET Panel
被呈現爲DIV時,他們有相似的含義:
<asp:Panel id="Panel1" runat="server" CssClass="ButtonPanel">
<asp:TextBox id="Txt1" runat="server" />
<asp:Button id="Btn1" Text="click me" OnClick="Button_Click" runat="server"/><br />
<asp:TextBox id="Txt2" runat="server" />
<asp:Button id="Btn2" Text="click me" OnClick="Button_Click" runat="server"/><br />
<asp:TextBox id="Txt3" runat="server" />
<asp:Button id="Btn3" Text="click me" OnClick="Button_Click" runat="server"/>
</asp:Panel>
然後你就可以找到和循環他們以這樣的方式
Dim allPanelButtons = Panel1.Controls.OfType(Of Button)()
For Each btn In allPanelButtons
btn.Visible = False
Next
OfType
也將整個頁面上工作,而不是在他們嵌套子控件(如GridView
)。
你的問題是有點不清楚,當然你也可以直接當他們聲明加入到他們的名字(實際上是ID)的參考值控制頁面的ControlCollection
:
Btn1.Visible = False
是的,它的工作原理也通過ID搜索它們,但我不推薦這種方法,因爲它不是故障安全的,並且可能會導致僅在運行時發生的未來問題。所以,只是爲了完整起見:
For i = 1 To 6
Dim control = FindControl("Btn" & i)
If control IsNot Nothing AndAlso TypeOf control Is Button Then
control.Visible = False
End If
Next
請多放些精力在問問題的清晰可讀,格式化的方式 - 看http://tinyurl.com/so-hints – 2012-03-15 20:44:26
你不小心把帽子中途通過鎖或什麼?張貼之前你應該真的校對。 – 2012-03-15 20:46:17
啊,vb.net的威力,它不區分大小寫。驅動C#程序員瘋狂。用Me.Controls替換「項目」。或me.controls :) – 2012-03-15 22:25:32