2014-12-08 62 views
2

Initial Panels Position - image隱藏而在Windows重新顯示板/組件窗體

嗨,我試圖讓一個按鈕的行動,做以下行爲:

1)當我第一次點擊按鈕1的PANEL1將dissapear和panel2將獲得Parent容器的大小。 2)如果我重新點擊按鈕,面板1將再次出現,面板2將復位。

然後問題是在第2步,當我重新點擊button1 panel2不調整好,並得到,以某種方式固定值(檢查:problem - image)。

我試圖像這樣:

private void button1_Click(object sender, EventArgs e){ 

     if (panel1.Visible){ 
      panel1.Visible = false; 
      panel1.Enabled = false;   
      panel2.Dock = DockStyle.Fill; 
     } 
     else{ 
      panel1.Visible = true; 
      panel1.Enabled = true; 
      panel2.Dock = DockStyle.None; 
      panel2.Anchor = ((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right; 
     } 

    } 

PS:檢查圖像鏈接,可能有助於理解這個問題。另外我的項目中的panel2是一個WebBrowser組件。

謝謝。

回答

0

實際上,您應該使用的控件是SplitContainer控件。

您可以使用SplitContainer的Panel1作爲您的第一個Panel,並且在SplitContainer的Panel2中,您可以Dock-Fill WebBrowser控件。

如果不應該面板由用戶調整,然後設置

splitContainer1.IsSplitterFixed = true; 

要隱藏第一小組中,您所撥打的是:

splitContainer1.Panel1Collapsed = true; 

你明明設置爲了把它帶回來。

+0

不完全是我想要做的,但解決了與panel2不調整大小我的問題。謝謝。 – Xplouder 2014-12-08 16:40:45

0

在您運行之前,複製panel1的位置並將其重新發布到同一位置。示例

if (panel1.Visible){ 
      panel1.Visible = false; 
      panel1.Enabled = false;   
      panel2.Dock = DockStyle.Fill; 
     } 
     else{ 
      panel1.Visible = true; 
      panel1.Enabled = true; 
      panel2.Dock = DockStyle.None; 
      panel2.Location = new Point(15, 15); 
      panel2.Height= //Original height before you run. 
      panel2.Anchor = ((AnchorStyles.Top | AnchorStyles.Bottom) | AnchorStyles.Left) | AnchorStyles.Right; 
     } 

注意:新Point將在您運行之前保留該位置。也請嘗試添加相同的高度和寬度。我認爲這可能有效。我認爲這個位置的變化是由於使用了碼頭屬性,而只是解除鎖定可能是不夠的。在TableLayoutPanel中

時,我有複雜的cntrols

更新,需要動態變化。在這種情況下,我建議使用TAbleLayoutPanel。您可以將面板放置在桌面佈局中,並將桌子放置在任何您想要的位置。你也可以把桌子放在桌子裏面。然後,您可以隱藏,停靠和取消鎖定,並且您的面板將位於固定網格中,因爲它位於桌子中。檢查TableLayoutPanel Here或更好的youlaube上的TableLAyoutPanel。希望這個幫助。

+0

我你的解決方案之前tryed,問題是,我永遠不會知道是Panel2的寬度和高度,因爲其調整automaticaly取決於大小的MainForm(即:如果我有最大化的窗口或隨機大小)。這樣我不能保存原始值,因爲它們不是恆定的。 – Xplouder 2014-12-08 02:18:53

+1

嗨,在這種情況下使用tableLayoutPAnel。看到我上面的更新。把你的面板放在一個傳說中(即一個網格)。然後停靠TAble,它將始終保持您想要的形狀。 – 2014-12-08 02:48:53

+0

嗨。絕對是一個好的解決方案。說實話,我不知道這個組件。謝謝回覆。 – Xplouder 2014-12-08 23:27:11

0

使用splitcontainer控件,並在其panle1和panel2中添加兩個面板控件。

通過點擊按鈕來設置splitcontainer1.panle1.visible = truesplitcontainer1.panle2.visible=false和明年點擊splitcontainer1.panle1.visible = falsesplitcontainer1.panle2.visible=true