2012-03-15 50 views
0

我不知道我是否在標題中解釋過,這是我想要做的。
(在VB中的活動服務器頁面)
我有5個按鈕叫but1 ..... but2。
現在我有下面的代碼,使他們看不見您可以通過將其名稱用作字符串而不是對象來訪問對象嗎?

but1.Visible=false; 
but2.Visible=false; 
but3.Visible=false; 
but4.Visible=false; 
but5.Visible=false, 

有沒有使用字符串來訪問對象的方式,例如

for(i=i;i<6;i++ 
     items("but"+str(i)).visible=false 
+5

請多放些精力在問問題的清晰可讀,格式化的方式 - 看http://tinyurl.com/so-hints – 2012-03-15 20:44:26

+2

你不小心把帽子中途通過鎖或什麼?張貼之前你應該真的校對。 – 2012-03-15 20:46:17

+0

啊,vb.net的威力,它不區分大小寫。驅動C#程序員瘋狂。用Me.Controls替換「項目」。或me.controls :) – 2012-03-15 22:25:32

回答

2

把它們放在一個容器控件像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 
+0

嗨,謝謝你,是的,你回答我的quastion,我沒有真正知道如何去問它。 – 2012-03-16 19:53:22

相關問題