2013-04-24 135 views
0

我正在使用「Microsoft Visual Studio 2010」和C#語言。我的用戶界面這個樣子的(用戶之前點擊Advance按鈕): enter image description here按下按鈕自動展開窗口

如果用戶點擊Advance按鈕,我希望它顯示窗口的其餘部分如圖片所示波紋管:

enter image description here

您能否告訴我如何隱藏所有這些信息,直到用戶點擊Advance按鈕?我怎樣纔能有一個更小的窗口,如第一個圖所示。當用戶按下advance按鈕時,它將展開並顯示剩下的內容。 如果你能告訴我細節,我會很感激

+1

'panel.Visible = false' – leppie 2013-04-24 05:01:31

回答

3

所有WinForms控件(包括窗體本身)都具有AutoSize屬性。設置爲true時,會導致控件自動調整其大小以適應其內容。因此,您應該將「高級」控件放到UserControl中,並將該UserControl添加到您的表單中(或者如果您懶惰,則可以使用Panel)。然後,單擊「高級」按鈕時,切換UserControl的可見性。表單應該相應地自動調整其大小。

或者,您可以將SplitContainer添加到您的表單中,該表單可以摺疊其兩個面板之一。 「高級」按鈕然後將切換Panel2Collapsed屬性的狀態以展開/摺疊底部面板。

注意:在語法上,該按鈕的標題應該是「高級」,而不是「高級」。爲了改善用戶體驗,我建議添加某種指標,以便按鈕擴展窗口上的可用信息,而不是提交或打開第二個窗口。大多數「擴展器」按鈕使用向下的箭頭來完成此操作,例如,

您可以使用此圖像,或者一個Unicode字形。例如,,black down-pointing triangle。展開面板時將其更改爲向上的三角形。

+0

非常感謝,AutoSize屬性解決了我的問題。我非常感謝你的幫助。 – 2013-04-24 05:37:30

+0

閱讀此文的其他人:this.Size + = new Size(100,100);也工作。 this.Size + = new Size(width,height); – 2013-04-24 05:43:25

+0

@Justin手動調整'Size'屬性時,不應該以像素爲單位對大小進行硬編碼。相反,您應該查詢面板的實際大小以隱藏或顯示。例如,'Form.Size + = Panel.Size'。這樣,當基於DPI或其他自動縮放生效時,您的代碼將正常工作。 – 2013-04-24 05:47:37

1

你的第一個表單的OnLoad事件會將每個控件或groupbox(無論你使用哪個)的可見性設置爲false。

並在事先buttonclick事件使其可見性是真實的。

代碼如下:

private void FirstForm_Load(object sender, EventArgs e) 
{ 
    controlName.Visible=false; 
} 

private void btnAdvance_Click(object sender, EventArgs e) 
{ 
    controlName.Visible=true; 
} 

MSDN對於visibility屬性:

http://msdn.microsoft.com/en-IN/library/system.windows.uielement.visibility.aspx

希望它有幫助。

1

首先將以下屬性設置爲可視的假 ,就像所有的lebels和文本框一樣。然後在高級按鈕的單擊事件中將所有屬性設置爲可見。

+1

非常感謝您的回覆。它運作良好。但屏幕尺寸保持不變。你能告訴我,我怎麼能有一個更小的窗口,如第一個圖所示。並且當用戶按下「高級」按鈕時,它將展開並顯示其餘 – 2013-04-24 05:15:26

+0

當高級按鈕的單擊事件觸發時增加窗口高度。 – 2013-04-24 05:20:19

0

你可以簡單地像這樣做,

1.增加一個面板到窗體底部並添加 你需要在高級按鈕,點擊可顯示所有控件。

2.change面板和表單以下兩個性質,在窗體加載事件

 > AutoSize >> true 
     > AutoSizeMode >> GrowAndShrink 

3.then你可以使用像下面

private void Form1_Load(object sender, EventArgs e) 
    { 
     panel1.Visible = false; 
    } 

4.然後在高級按鈕點擊事件

private void button1_Click_1(object sender, EventArgs e) 
    { 
     panel1.Visible = true;  
    } 

希望這會幫助你和任何其他需要今後......!

1

1.將一個面板添加到窗體的底部,並添加所有需要在高級按鈕單擊中顯示的控件。

2.change面板和表單以下兩個性質,在窗體加載事件

> AutoSize >> true 
    > AutoSizeMode >> GrowAndShrink 

3.then你可以使用像下面

private void Form1_Load(object sender, EventArgs e) 
{ 
    panel1.Visible = false; 
} 

4.然後在高級按鈕點擊事件

private void button1_Click_1(object sender, EventArgs e) 
{ 
    //panel1.Visible = true; 
     string value1 = button1.Text; 
     switch(value1) 
     { 
      case "Expand": 
       panel1.Visible = true; 
       break; 
      case "Reduce": 
       panel1.Visible = false; 
       break; 
     } 
     button1.Text = "Reduce"; 
     if(panel1.Visible==true) 
     { 
      button1.Text = "Reduce"; 
     } 
     else if(panel1.Visible==false) 
     { 
      button1.Text = "Expand"; 
     }  
}