2012-09-12 57 views
1

在Form構造函數中,我生成一組面板(pnl_,代碼如下),其中包含單選按鈕。 當我可視化窗體時,只有窗格可見,而不是內部的單選按鈕。 奇怪的是,當我只生成一個面板時(pnl在下面的代碼中),一切正常。Radibuttons在面板陣列內不可見

public partial class Radiobuttons_on_Panel : Form 
{ 
    private Panel pnl = new Panel(); 
    private RadioButton rbtn1 = new RadioButton(); 
    private RadioButton rbtn2 = new RadioButton(); 

    private Panel[] pnl_ = new Panel[7]; 
    private RadioButton[] rbtn1_ = new RadioButton[7]; 
    private RadioButton[] rbtn2_ = new RadioButton[7]; 

    public Radiobuttons_on_Panel() 
    { 
     InitializeComponent(); 

     pnl.Location = new Point(10, 10); 
     pnl.Size = new Size(100, 100); 
     pnl.BorderStyle = BorderStyle.FixedSingle; 

     rbtn1.Location = pnl.Location; 
     rbtn1.Text = "AAA"; 

     rbtn2.Location = new Point(pnl.Location.X, pnl.Location.Y + rbtn1.Height); 
     rbtn2.Text = "BBB"; 

     pnl.Controls.Add(rbtn1); 
     pnl.Controls.Add(rbtn2); 
     this.Controls.Add(pnl); 

     for (int i = 0; i < pnl_.Length; i++) 
     { 
      pnl_[i] = new Panel(); 
      pnl_[i].BorderStyle = BorderStyle.FixedSingle; 
      pnl_[i].Size = new Size(100, 100); 
      pnl_[i].Location = new Point(10 + i * 110, 200); 

      rbtn1_[i] = new RadioButton(); 
      rbtn1_[i].Location = pnl_[i].Location; 
      rbtn1_[i].Text = "AAA"; 

      rbtn2_[i] = new RadioButton(); 
      rbtn2_[i].Location = new Point(pnl_[i].Location.X, pnl_[i].Location.Y + rbtn1_[i].Height); 
      rbtn2_[i].Text = "BBB"; 

      pnl_[i].Controls.Add(rbtn1_[i]); 
      pnl_[i].Controls.Add(rbtn2_[i]); 

      this.Controls.Add(pnl_[i]); 
     } 
    } 
} 

問題在哪裏?

+1

有讓你得到正確的注意語言標記它。我不知道一個單選按鈕編程語言。 – randominstanceOfLivingThing

回答

1

您的問題在於您的位置計算錯誤。單選按鈕的位置與其容器相關 - 在本例中是面板。如果您只是將您的位置設置爲

rbtn1_[i] = new RadioButton(); 
rbtn1_[i].Location = new Point(10, 10); 
rbtn1_[i].Text = "AAA"; 

rbtn2_[i] = new RadioButton(); 
rbtn2_[i].Location = new Point(rbtn1_[i].Location.X, rbtn1_[i].Location.Y + rbtn1_[i].Height); 
rbtn2_[i].Text = "BBB"; 

按鈕將按您希望的方式佈置。

由於您的單選按鈕位置值足夠小以便在面板中可見,因此您的第一項工作才能解決。對於其他人來說,他們不在其父母面板的範圍之內。

長期和短期的它是,Location屬性總是相對於容器,這是否是一個PanelForm - 爲您的面板上Location值相對於Form但你的收音機的Location值他們在任何面板上的按鈕相對於

MSDN參考:http://msdn.microsoft.com/en-us/library/system.windows.forms.control.location.aspx