2011-12-22 18 views
1

C#フォームウィンドウでは、5つのコントロールがあるとします。私はちょうどそれらのいくつかを隠している。プログラムを実行すると、(Visible = true)コントロールが表示されます。ボタンをクリックして、すべてのコントロールを表示または非表示にしたいとします。どうやってやるの?C#でフォームのすべての非表示コントロールを表示するには?

答えて

2

あなたは再帰的にすることができますし、パネル/グループボックスがあれば子も表示されます。

public void MakeVisible(Control control) 
{ 
    if(control.HasChildren) 
    { 
     foreach (Control child in control.Controls) 
     { 
      MakeVisible(child); 
     } 
    } 
    control.Visible = true; 
} 
2

コード内の表示されているプロパティを変更する必要があります。

button1.visible = true; 

各非表示のコントロール、ボタン、またはそうでない場合は、

私はあなたが他の誰もが示唆しているすべてのコントロールをループしたいと思うかどうかは疑いありません。フォーム上のすべての視認性を変更することは時間の無駄であり、異なるシナリオで特定のコントロールのみを表示させると、トラックをさらに複雑にする可能性があります。

これはわずか5つのコントロールなので、それぞれを個別に変更することに固執します。

4

Winformsのために、これを試してみてください。

foreach (Control c in Controls) { 
    c.Visible = true; 
} 

このコードは、フォーム上のすべてのコントロールをループし、trueにVisibleプロパティを設定し、それぞれが見えるようにします。

+1

@H。ウォーダック:なぜそれが再帰的であるか気にしますか? –

1

あなたはすべてのものを表示/非表示にしたい場合は、

foreach (var controlObj in form.Controls) 
    ((Control)controlObj).Visible = True; 

よう

foreach (Control cr in this.Controls) 
     cr.Visible = false; // or true, if you want to show everything 
1

何かがトリックを行う必要があります。これは単純にすべてのコントロールをフォームに表示します。あなたが唯一の5のコントロールを持っている場合は、あなたもおそらく

void showHiddenControls(bool show) { 
    control1.Visible = show; 
    control2.Visible = show; 
    // ... 
} 
のような方法では、個別に示すことができ

を(あなたがそれらをAFAIRキャストする必要がありますので、Form.ControlsだけObject Sを含む型なしコレクションであることに注意してください)

これは、showHiddenControls(true)を使用してそれらを表示し、showHiddenControls(false)を使用してそれらを再び隠すことができるという利点があります。

0

主なアイデアは、そのようなオブジェクトを作成するために、次のようになります。

Label toto = new Label(): 
(...) Do whatever you wan't to initialize your object 
toto.Visible = false; 

Button makeItAppear = new Button(); 
(..) Do whatever you wan't to initialize this button 

を[OK]をクリックしますイベントにハンドラを追加します。

なeventHandlerで
makeItAppear.Click += new System.EventHandler(MakeItAppear); 

そして:

private void MakeItAppear(object sender, EventArgs e) 
{ 
    this.toto.Visible = true; 
} 

これを表示させ、ハンドラによって呼び出される関数を作成することです。もちろん、複数のオブジェクトを表示または消滅させる場合は、この関数のすべてのオブジェクトに対して同じ処理を行います。

関連する問題