2016-05-02 24 views
0

タイトルが明確でない場合は申し訳ありません。 私は約20のラベルと20のテキストボックスを自分のasp.Netフォームに持っており、すべてのVisible属性はfalseです。C#のFORループでASP.NETのラベルIDを使用するにはどうすればよいですか?

与えられた数に応じて、Visible属性の一部をtrueに変更します。これらのラベルとテキストボックスのIDをFORループでどのように使用できますか?

私はこのようなラベルを命名しました:のLabel1、Label2を、LABEL3など

PS:ParameterCountの値は実施例1の1から20

for (int i = 0; i <= parameterCount; i++) 
{ 
    Label[i].Visible = True; //I know it's wrong, but something like this 
} 

に異なりますParameterCount = 4

(のLabel1、Label2を、LABEL3、Label4から).Visible = Trueの

例2:パラメータ数= 2

(のLabel1、Label2を).Visible = Trueの

+0

はどのようにあなたのラベルにIDを与えないと仮定すると? – choz

+0

Label1、Label2、Label3など – iminiki

答えて

0

は単に配列にあなたのラベルを置く:

Label[] arr = new Label[] { label1, label5, label10, lable13, label14 }; 
for (int i = 0; i < ParameterCount; ++i) 
    arr[i].Visible = true; 

ParameterCount <= arr.Length

+0

ParameterCountの値が異なるたびに動作しません。 – iminiki

+0

いいえ、それは間違いなく動作します。ラベルを正しい順序で配列に入れてください。その後、配列の先頭から 'ParameterCount'要素だけをループします。 –

+0

注文を単一の配列に収めることができない場合は、必要に応じて配列を追加することを検討してください。次に、 'ParameterCount'の値に応じてどの配列を使うかを決めます –

0

あなたはasp:Panel内でこれらのラベルやテキストボックスを置くことができます:

<asp:Panel ID="myPanel" runat="server"> 
    ... your textboxes and labels come here 
</asp:Panel> 

、その後、単純にこのパネルの表示を切り替える:

myPanel.Visible = true; // or false if you wish 
+0

1つのケースでは2つのラベルまたは別の10のラベルになる可能性があるため、動作しないと思われます。あなたの例は、それらのすべてを表示するように設定します。 – iminiki

+1

あなたは@iminikiのサンプルをあまりに単純化したと思います。 Darinは質問のあなたのコードに基づいてあなたに答えます。 –

1

Page.FindControlを使用します。

Label l = this.FindControl($"Label{i}") as Label; 

if (l != null) 
{ 
    // use the label `l` here 
} 

ラベルが先頭の要素でない場合は、コンテナコントロール内でラベルを検索する必要があります。

MSDNの完全な例を参照してください:How to: Access Server Controls by ID

関連する問題