在任何组框中单击单选按钮,它将删除之前单击过组框的单击

时间:2012-11-12 23:14:19

标签: c# radio-button groupbox

我的申请需要一系列问题,范围从1到1000 问题由用户设置,我需要groupbox来包含 2个单选按钮如下所示。 该代码确实创建了包含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();     

1 个答案:

答案 0 :(得分:0)

我认为这是因为pnlQ11是另一个UserControl(我猜您正在使用Windows窗体),并且根据MSDN,控件只能分配给一个Control.ControlCollectionhttp://msdn.microsoft.com/en-us/library/system.windows.forms.control.controlcollection.add%28v=vs.100%29.aspx)。

因此,您的RadioButton已从GroupBox移除,并添加到pnlQ11,这是所有其他RadioButton所属的控件。然后,解决方案是避免将RadioButton添加到其他控件并仅将其保留在GroupBox