2012-08-30 56 views
0

我正在使用拆分容器。我的分體式容器有兩個面板和水平方向。在第一個面板中有一些文本框和一個按鈕。當我點擊按鈕然後代碼運行摺疊拆分容器的Panel1。代碼時發生崩潰然後我的按鈕,所有獲得無形的文本框狀以win形式展開collpase splitcontainer c#

private void button1_Click(object sender, EventArgs e) 
{ 
     splitContainer1.Panel1Collapsed = !splitContainer1.Panel1Collapsed; 
} 

我的問題是。所以我下次不能使這些控件可見。所以我想像按鈕這樣的技巧將不會隱形,因爲我可以再次單擊該按鈕以使panel1可見。如果可能的話,指導我如何修復或將我的按鈕放在分離器而不是面板上。所以引導我如何做到這一點。

+0

這難道不是很明顯,你不能在'Button'單擊是摺疊'SplitContainer.Panel1'的一部分嗎?您最好將'Button'存儲在'ToolBar'或'MenuItem'中,根據崩潰狀態將其啓用/禁用。 – varg

回答

3
private void button1_Click(object sender, EventArgs e) 
{ 
    splitContainer1.Panel1Collapsed = !splitContainer1.Panel1Collapsed; 
    button1.Parent = splitContainer1.Panel1Collapsed ? splitContainer1.Panel2 : splitContainer1.Panel1; 
} 
+0

第二次點擊完成一些工作並再次摺疊面板後,此按鈕消失,您不能再次單擊它。 – varg

+1

我不能重複你在說什麼。在我的情況下,按鈕在同一位置上顯示,而其他控件消失。也許它隱藏在另一個控制之下?添加button1.BringToFront();最後並驗證。 – coolmine

+0

躲在一個小的unimposing groupbox後面。該死的你,控制! :) - 很好的解決方案! – varg

0

與我之前對您的整個發帖的評論相關。這是一個小型解決方案,具有ToolBarButton。它僅在SplitContainer.Panel1摺疊時啓用。

代碼:

private void Form1_Load(object sender, EventArgs e) 
    { 
     splitContainer1.Panel1Collapsed = true; 
     toolStripButton1.Enabled = true; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     splitContainer1.Panel1.Hide(); 
     toolStripButton1.Enabled = true; 
    } 

    private void toolStripButton1_Click(object sender, EventArgs e) 
    { 
     if (splitContainer1.Panel1Collapsed) 
     { 
      toolStripButton1.Enabled = false; 
      splitContainer1.Panel1.Show(); 
     } 
    }