2011-10-18 8 views
0

私は約30のコントロールを持つグループボックスを含むWindowsフォームアプリケーションを持っています。たとえば、15個のラベルと15個のテキストボックスがあるとします。このグループボックスおよびその中のコントロールは、3つの異なるシナリオを表示するために使用される:パネルを使用してWinFormsコントロールを整理する

シナリオ1 - すべてのコントロールが表示されている必要が

シナリオ2 - ラベル/テキストボックス#1、4、11及び14を必要とします表示され、その他は

シナリオ3を非表示にする - 表示されるように、ラベル/テキストボックス#3、9、11及び13を必要とし、他は

シナリオ1は十分に明らかに簡単である非表示にします。しかし、他の2つのシナリオはもう少し作業です。もともと、私は手動でこのようなコントロールをそれぞれ表示/非表示するためのコードを書いた:

ConfigureUIForScenario2() 
{ 
    label1.visible = true; 
    textbox1.visible = true; 
    label2.visible = false; 
    textbox2.visible = false; 
    label3.visible = false; 
    textbox3.visible = false; 
    label4.visible = true; 
    textbox4.visible = true; 
    ... 
} 

非常に扱いにくいし、別の方法がなければならないようにそれはちょうどそうです。私はコントロールを構成するためのパネルを見ていましたが、シナリオ2とシナリオ3で表示/非表示が必要なコントロールは一般的には互いに隣接していないため、そのアイデアは各ラベルと対応するテキストボックスパネルに表示し、パネルを表示/非表示にします。 15個のパネルの可視性を設定することは、もちろん、30個の個別のコントロールを手動で設定するよりも少ないのですが、それでもまだ良い方法があるのでしょうか?私は今、3つのパネル(各シナリオに1つずつ)を持ち、各パネルに必要なコントロールを追加することを検討しています。このようなレイアウトの問題に関して、何らかのベストプラクティスがあるのだろうかと思います。

+0

コントロールに名前を付ける必要があります。 – SLaks

+0

ああ、彼らの名前は、私はスペースと明快さのためにデフォルトの名前を使用していただけです。 – user685869

答えて

2

あなたは、リスト内のコントロールをループその後、各シナリオのList<Control>またはControl[]を作成し、必要に応じてそのVisibleプロパティを設定することができます。

+0

それは良い考えです。私はそれを試してみよう!提案していただきありがとうございます。 – user685869

関連する問題