1

1 から 1000 までの一連の質問を必要とするアプリケーションがあります
。質問はユーザーによって設定され、以下に示す 2 つのラジオ ボタンを含むグループ ボックスが必要です。このコードは、2 つのラジオ ボタンを含む複数のグループ ボックスを作成します。

このコードは、必要な質問の数によって決定されるループ内にあります。

問題は、グループボックスのいずれかでラジオボタンをクリックすると、以前にクリックされたグループボックスからのクリックが削除されることです。

これを解決するにはどうすればよいですか?

                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();     
4

1 に答える 1

0

私はそれpnlQ11が別のものであるためだと思いますUserControl(Windowsフォームを使用していると思います)、MSDNによると、コントロールは1つにしか割り当てることができませんControl.ControlCollectionhttp://msdn.microsoft.com/en-us/library/system .windows.forms.control.controlcollection.add%28v=vs.100%29.aspx )。

したがって、 yourRadioButtonは から削除され、他のすべての が属する同じコントロールである にGroupBox追加されます。次に、解決策は、その他のコントロールに追加することを避け、それをpnlQ11RadioButtonRadioButtonGroupBox

于 2012-11-12T23:29:48.557 に答える