2012-11-12 67 views
1

我有一個應用程序需要一組範圍從1到1000的問題。
問題已設置由用戶和我需要groupbox包含如下所示的單選按鈕。 該代碼確實創建了包含2個單選按鈕的多個組框。在任何組框中單擊單選按鈕,它將刪除以前點擊過的任何groupbox的點擊

此代碼處於由需要多少個問題確定的循環中。

問題是,當單擊任何一個組框中的單選按鈕時,它將刪除之前單擊過的任何組框的點擊。

我該如何解決這個問題?

   GroupBox grpAnswerType = new GroupBox();               // new groupbox 
       if (intZ < 9) 
       { 
        grpAnswerType.Name = "grpAnswerType00" + strQNumber; 
       } 
       if (intZ >= 10 & intZ <= 99)             // intZ is the counter in the loop 
       { 
        grpAnswerType.Name = "grpAnswerType0" + strQNumber;      // name is used later 
       } 
       if (intZ >= 100 & intZ <= 999) 
       { 
        grpAnswerType.Name = "grpAnswerType" + strQNumber; 
       } 

       grpAnswerType.Location = new Point(290, intR + 20); 
       grpAnswerType.Size = new Size(150, 45); 
       grpAnswerType.ForeColor = System.Drawing.Color.Red; 
       grpAnswerType.BackColor = SystemColors.Control; 
       grpAnswerType.Font = font; 
       grpAnswerType.Text = "Choose answer type "; 
       this.Controls.Add(grpAnswerType); 
       grpAnswerType.Show(); 
       clsGlobals.gGroupBoxRadioButton3[intZ] = grpAnswerType;     // add to array for later storage to database 
       pnlQ11.Controls.Add(grpAnswerType);          // add to the dynamic panel on the form 




       RadioButton rbtnA1 = new RadioButton();                 // Radio Button1 
       if (intZ < 9) 
       { 
        rbtnA1.Name = "rbtnA100" + strQNumber; 
       } 
       if (intZ >= 10 & intZ <= 99) 
       { 
        rbtnA1.Name = "rbtnA10" + strQNumber; 
       } 
       if (intZ >= 100 & intZ <= 999) 
       { 
        rbtnA1.Name = "rbtnA1" + strQNumber; 
       } 

       rbtnA1.Location = new Point(295, intR + 38); 
       rbtnA1.Size = new Size(60, 25); 
       rbtnA1.Text = "One"; 

       rbtnA1.Font = font; 
       rbtnA1.ForeColor = System.Drawing.Color.Blue; 
       rbtnA1.BackColor = SystemColors.Control; 
       grpAnswerType.Controls.Add(rbtnA1); 
       pnlQ11.Controls.Add(rbtnA1);              // if this is not commented, it appears on the panel, if not it does not 
       rbtnA1.Show(); 
       clsGlobals.gRadioButtonOne[intZ] = rbtnA1; 
       rbtnA1.BringToFront(); 

       RadioButton rbtnA2 = new RadioButton();                 // Radio Button 2 
       if (intZ < 9) 
       { 
        rbtnA2.Name = "rbtnA200" + strQNumber; 
       } 
       if (intZ >= 10 & intZ <= 99) 
       { 
        rbtnA2.Name = "rbtnA20" + strQNumber; 
       } 
       if (intZ >= 100 & intZ <= 999) 
       { 
        rbtnA2.Name = "rbtnA2" + strQNumber; 
       } 
       rbtnA2.Location = new Point(355, intR + 38); 
       rbtnA2.Size = new Size(70, 25); 
       rbtnA2.Text = "All"; ; 

       rbtnA2.Font = font; 
       rbtnA2.ForeColor = System.Drawing.Color.Blue; 
       rbtnA2.BackColor = SystemColors.Control; 
       grpAnswerType.Controls.Add(rbtnA2); 
       pnlQ11.Controls.Add(rbtnA2);              // if this is not commented, it appears on the panel, if not it does not      


       rbtnA2.Show(); 
       clsGlobals.gRadioButtonAll[intZ] = rbtnA2; 
       rbtnA2.BringToFront();  
+0

不要將該單選按鈕添加到面板,只將其添加到組框。相應地調整位置。 –

回答

0

我想這是因爲pnlQ11是另一個UserControl(我猜你正在使用Windows窗體)和acording到MSDN,控制只能被分配到一個Control.ControlCollectionhttp://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.add%28v=vs.100%29.aspx)。

因此,您的RadioButtonGroupBox中刪除並添加到pnlQ11,這是所有其他RadioButton所屬的相同控件。然後,解決方案是避免將RadioButton添加到該其他控件並僅保留在GroupBox