[英]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.