Как проверить динамически созданные radiobuttons

269
09 августа 2018, 18:30

Пишу клиентскую часть обычных тестов(викторины), где динамически, в зависимости от кол-ва вариантов ответов, создаются radiobutton. В какой способ можнo/нужно проверять какой из них был checked? Выбраные ответы будут помещаться в List и потом отправляться на сервер, но как выбрать обозначеные ответы не могу понять

 public  void Create_controls()
        {
            flowLayoutPanelTop.Controls.Clear();
            int k = 0;
            Random random = new Random();
            for (int j = 0; j < c; j++)
            {
                TextBox question = new TextBox();
                question.AutoSize = true;
                question.Enabled = false;
                question.Name = "lb" + j.ToString();
                flowLayoutPanelTop.Controls.Add(question);
                question.Font = new Font(question.Font, FontStyle.Bold);
                byte[] array = new byte[1];     // num of test
                array[0] = (byte)j;             //get test
                Datagram getTest = new Datagram(Commands.GET_TEST, array);  //get test
                getTest.Send(MainForm.socket);                              //get test
                getTest.ReceiveData(MainForm.socket);                       //get test
                string result = System.Text.Encoding.UTF8.GetString(getTest.data.ToArray());
                Jsonn test = JsonConvert.DeserializeObject<Jsonn>(result);
                int num = test.Variants.Count;
                question.Text = test.Text;
                List<Dictionary<string, string>> dat = new List<Dictionary<string, string>>();
                dat = test.Variants;
                List<int> val = new List<int>();    //list depends on num of variants
                for(int i = 0; i < num; i++)
                {
                    val.Add(i);
                }
                for (int i = 0; i < val.Count; i++)            //shuffle          
                {
                    int tmp = val[0];
                    val.RemoveAt(0);
                    val.Insert(random.Next(val.Count), tmp);
                }
                val = val.OrderBy(v => random.Next()).ToList();    //one more time shuffle
                for (int i = 0; i < num; i++) // num for number of variants
                {
                    RadioButton rb = new RadioButton();
                    rb.Name = "rb" + k.ToString() + i.ToString(); //name like rb41 mean 4 question 1 variant
                    flowLayoutPanelTop.Controls.Add(rb);
                    rb.AutoSize = true;
                    int q = val[i];
                    var dictWithKey = dat.First(d => d.ContainsKey(q.ToString()));
                    rb.Text = dictWithKey[q.ToString()];
                    k = k + 4;
                }
                num = 0;
            }
            Button btnSend = new Button();
            btnSend.AutoSize = true;
            btnSend.Text = "Send";
            flowLayoutPanelTop.Controls.Add(btnSend);
        } 
Answer 1

Заведи внншнюю коллекцию List , при создании радиокнопки добавляй её в эту коллекцию. Так ты сможешь получить доступ ко всем созданным контролам, и узнать их состояние в любой момент.

READ ALSO
Итерация по всем точкам внутри GraphicsPath

Итерация по всем точкам внутри GraphicsPath

Товарищи, возник такой вопрос: Положим, мы имеем некий GraphicsPathНеобходимо каким-то образом достать из него все точки с целыми координатами,...

158
Распознание текста с картинки

Распознание текста с картинки

Как очень качественно распознать текст с помощью Tesseract или ему подобных ?

134
Можно ли поставить Visual Studio 2017 оффлайн?

Можно ли поставить Visual Studio 2017 оффлайн?

Привет есть офлайн установщий хочу поставить C# только можно без интеренета это сделать?

140
Как подключить БД к WPF?

Как подключить БД к WPF?

Хотел подключить SQl Server к WPF - Программа запускается и сразу же крашится, но ошибки не выдает

150