2011-12-22 60 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

您將需要更改後面的代碼中的可見propery。

例如

button1.visible = true; 

併爲每個隱藏的控件,按鈕做或不做。

只是添加我懷疑你會想通過所有其他人建議的控制循環。如果您在不同情況下僅顯示某些控件,則更改表單上所有內容的可見性會浪費時間,並且可能會導致跟蹤效果進一步惡化。

由於它只有5個控件,我會堅持單獨更改每個控件。

4

有關的WinForms,試試這個:

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

代碼遍歷窗體上的所有控件並設置Visible屬性設置爲true,使每一個可見。

+1

@H。Wardak:你爲什麼會在乎它是遞歸的? – 2011-12-22 08:22:12

1

如果你想隱藏/顯示的一切,

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

喜歡的東西

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

應該做的伎倆。這只是顯示全部控件的形式。 (注意:Form.Controls爲僅包含Object秒的非類型化的集合,所以你要投他們AFAIR)

如果你只有5控制,你也可以單獨給他們,也許在像

void showHiddenControls(bool show) { 
    control1.Visible = show; 
    control2.Visible = show; 
    // ... 
} 
的方法

這樣做的好處是您可以使用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 

,然後單擊事件添加一個處理程序:

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

然後在事件處理程序:

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

最好的會是創建一個函數,使其出現並由Handler調用。當然,如果你有多個對象可以出現或消失,在這個函數中對所有對象都做同樣的事情。

相關問題