2012-09-12 2 views
1

Form 생성자에서 라디오 버튼이 포함 된 패널 배열 (아래 코드 pnl_)을 생성합니다. Form을 시각화하면 내부에만 라디오 버튼이 아닌 패널 만 표시됩니다. 궁금한 점은 하나의 패널 (pnl 아래 코드에서)을 생성 할 때 모든 것이 정상입니다.라디오 버튼이 패널 배열 내부에서 보이지 않습니다.

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 값 귀하의 패널 라디오에 대한 Form하지만하여 Location 값을 기준으로합니다 - 길고 그것의 짧은

Location 속성이이 Panel 또는 Form인지, 항상 용기에 상대적이다 그들이에 어떤 패널 버튼을 기준으로합니다

MSDN 참조 :. 당신이 바로 관심을 얻을 수 있도록 언어 http://msdn.microsoft.com/en-us/library/system.windows.forms.control.location.aspx

관련 문제