簡體   English   中英

如何在C#中顯示窗體的所有隱藏控件?

[英]How to show all hidden controls of a Form in C#?

在C#窗體窗口中,說我有5個控件。 我只是藏了一些。 當我運行程序時,僅應顯示(Visible = true)控件。 我想單擊一個按鈕以顯示或取消隱藏所有控件。 我怎樣才能做到這一點?

對於Winforms,請嘗試以下操作:

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

此代碼循環遍歷窗體上的所有控件,並將Visible屬性設置為true,以使每個控件可見。

您將需要在后面的代碼中更改可見屬性。

例如

button1.visible = true;

並針對每個隱藏的控件(無論是否為按鈕)執行此操作。

補充一點,我懷疑您是否想遍歷其他所有人建議的所有控件。 更改表單上所有內容的可見性是在浪費時間,並且如果在不同情況下僅使某些控件可見,則可能導致復雜化。

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

您可以使其遞歸,然后,如果您有任何面板/組框,其子項也將變為可見。

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

如果您想隱藏/顯示所有內容,

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

就像是

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

應該可以。 這僅顯示表單中的所有控件。 (請注意, Form.Controls是一個僅包含Object的無類型Collection,因此您必須公平地對其進行轉換)

如果您只有5個控件,則也可以分別顯示它們,例如

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

這樣做的好處是,您可以使用showHiddenControls(true)顯示它們,然后使用showHiddenControls(false)再次隱藏它們。

主要思想是創建這樣的對象:

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

然后在click事件上添加一個處理程序:

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

然后在eventHandler中:

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

最好的辦法是創建一個使它出現並由Handler調用的函數。 當然,如果您要使多個對象出現或消失,請對該函數執行所有操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM