2013-05-27 138 views
3

我有兩個組框grpMetergrpTag。我必須將grpMeter放置在grpTag之上。兩者都需要相同的位置和大小。切換組框可見性

單擊按鈕時,我必須使它們交替顯示。可能嗎?我嘗試了很多次,但只有1個組框變得可見。也許是因爲重疊的問題。我嘗試了面板,但同樣的問題出現。有沒有解決方法?

public void ShowMeter() 
{ 
    grpMeter.Visible = true; 
    grpTags.Visible = false; 
} 

public void ShowTag() 
{ 
    grpTags.Visible = true; 
    grpMeter.Visible = false;    
} 
+1

是否使用WPF? – cvraman

+1

您是否已將兩個控件添加到父容器? – David

+0

不是WPF,是同一個容器中的兩個組框 –

回答

12

將兩個組框相鄰放置,以便它們不重疊,然後查看它是否有效。如果你使它工作,不要用鼠標移動一個組合框,但只選擇它,然後在屬性列表中手動設置座標。

這樣就可以防止一個組合框意外成爲另一個組合框的子組合。

+0

好的,我會嘗試..它的工作方式,他們不重疊。現在我更改屬性 –

+0

你也可以使用箭頭鍵移動組框在正確的位置。 – tezzo

+3

工作兄弟!!!!!!!!!!!非常感謝您 –

0

試試這個:

private void button_Click(object sender, EventArgs e) 
{ 
    grpMeter.Visible = !grpMeter.Visible; 
    grpTags.Visible = !grpTags.Visible; 
} 
+0

沒有工作! –

1

嘗試button_click事件這裏面的邏輯:

private void btn_Click(object sender, EventArgs e) 
{ 
    if (grpTags.Visible) 
     ShowMeter(); 
    else 
     ShowTag(); 
} 
0

我不知道,但你正在尋找好像FlowLayoutPanel。然後,您可以將組框相鄰放置,並自動處理定位。這可以防止意外地將一個GroupBox放入另一個GroupBox或移動位置。還可以在設計時更輕鬆地工作。

+0

他想處理可見性而不是佈局。 – joe

+0

我明白了,但是對於相同的要求,我通常更喜歡使用flowlayoutpanel。我只是讓相同大小的組合框顯示/隱藏。我不必擔心定位。 –

0

請參閱下面的代碼。點擊按鈕將切換可見性。此外,重要的是你設置的groupboxes爲可見,另一種是無形的一個在構造函數

using System; 
using System.Windows.Forms; 

namespace TestForm 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

      //This is important. Set one of them to be Visible and the other one to be invisible 
      grpMeter.Visible = false; 
      grpTags.Visible = true; 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      grpMeter.Visible = !grpMeter.Visible; 
      grpTags.Visible = !grpTags.Visible; 
     } 
    } 
} 
0

其中一個好辦法,就是用RadioButton。拿兩個單選按鈕並將其放置在組框中。

像這樣的工作:

private void rdMeter_CheckedChanged(Object sender, EventArgs e) 
{ 
    grpMeter.Visible = rdMeter.Checked; 
    grpTag.Visible = !rdMeter.Checked; 
} 

private void rdTag_CheckedChanged(Object sender, EventArgs e) 
{ 
    grpTag.Visible = rdTag.Checked; 
    grpMeter.Visible = !rdTag.Checked; 
}