Как заполнить radiobutton массивом C# Windows Form

102
10 января 2021, 01:00

Есть несколько radioButton пример, (заполнены для примера, нужно случайными через цикл.)

`radioButton1.Text = tx1[0];
radioButton2.Text = tx1[1];
radioButton3.Text = tx1[2];
radioButton4.Text = tx1[3];
radioButton5.Text = tx1[4];`

Сам массив, который получается перемешенный

Random rnd = new Random();
        List<string> t1 = tx1.ToList<string>();
        List<string> s1 = new List<string>();


        while (t1.Count != 0)
        {
            string temp = t1[rnd.Next(0, t1.Count - 1)];
            t1.Remove(temp);
            s1.Add(temp);
        }

        string[] dd = s1.ToArray<string>();

Как заполнить значением из string[] dd1 чтобы были разные значения для каждого radioobutton? Заранее спасибо.

(Для тех кто делать будет не забудьте кнопку в rdbList добавить, rdbList.Add(Название кнопки на форме);))

Answer 1

Вот на скорую руку придумал такое решение:

Имеется исходный массив str, делаем из него другой, с которым будем работать (вдруг исходный пригодиться для чего-либо) - newStr. Также имеется список кнопок rdbList

Будем проходить по циклу и генерировать случайное число, причём максимально возможное число определяется количеством слов в рабочем массиве. Затем по полученному числу вытаскиваем слово из массива, передаём его в Text кнопки.

Потом, чтобы слова в кнопках не повторялись, создаём новый список на основе рабочего массива, удаляем из него использованное слово и кладём в рабочий массив, новый массив, без этого слова:

      private void Test()
      {
         string[] str = { "1", "2", "3" };//исходный массив
         string[] newStr = str.ToArray<string>();//рабочий массив
         List<RadioButton> rdbList = new List<RadioButton>(); //список с кнопками
         Random rnd = new Random();
         int num;
         for(int i=0; i<newStr.Length;i++)
         {
            num = rnd.Next(newStr.Length);//случайное число
            rdbList[i].Text = newStr[num];//слово в текст кнопки
            List<string> lst = new List<string>(newStr);
            lst.RemoveAt(num);//удаляем использованное слово
            newStr = lst.ToArray();//массив без использованного слова
         }
      }
READ ALSO
C# Когда оправдан захват внешних переменных в анонимных методах?

C# Когда оправдан захват внешних переменных в анонимных методах?

В C# предусмотрен механизм захвата внешних переменных в анонимных методахПриведу пример кода:

131
Окрасить ячейки datagrid wpf

Окрасить ячейки datagrid wpf

имеется вот такая таблица Datagrid

137
Как не хардкодить пароли и учётки в коде?

Как не хардкодить пароли и учётки в коде?

Как не хардкодить учетные записи? Какие есть варианты решения данной проблемы?

111
Как сделать рейтинг в игре?

Как сделать рейтинг в игре?

Есть игра "Найди элементы на картинке" есть две разных картинки,где нужно искать элементы

128