C # Прокручивать список имен и отображать имена на разные метки каждый раз, когда он повторяется - PullRequest
0 голосов
/ 21 января 2019

Я создаю это приложение Random Draw.Например, пользователь вводит 6 имен, затем нажимает кнопку рандомизации, и он отображает имена случайным образом в метках рядом друг с другом.Так, например, name в index [0] будет играть name в index [3] и так далее.У меня проблема в том, что я не знаю, как проходить и отображать каждое имя на другой этикетке.Есть ли способ посчитать мои метки и пройтись по этому пути?Вот мой код для циклического перебора имен в Списке и случайного выбора одного из них для отображения на первой метке.

for(int i = 0; i < names.Count; i++)
        {
            Random rand = new Random();
            int index = rand.Next(names.Count);
            var name = names[index];

            lblFirstName.Text = name;
            lblFirstName.Visible = true;
            names.RemoveAt(index);
        }

Как видите, имя всегда будет отображаться в lblFirstName.У меня есть еще 5 ярлыков с именем lblSecondName и т. Д.

Ответы [ 2 ]

0 голосов
/ 21 января 2019
  1. Используйте вместо вместо For
  2. Поместите свои ярлыки на один и тот же элемент управления (например, Panel1)

    List<string> labels = new List<string>() { "lblFirstName", "lblSecondName" , "lblThirdName" , .......... };
    while (names.Count > 0) {
        Random rand = new Random();
        int index = rand.Next(names.Count);
        var name = names[index];
        names.RemoveAt(index);
    
        index = rand.Next(labels.Count);
        //WebForms
        Panel1.FindControl(labels[index]).Text = name;
        Panel1.FindControl(labels[index]).Visible = true;
    
        //WinForms
        Panel1.Controls(labels[index]).Text = name;
        Panel1.Controls(labels[index]).Visible = true;
    
        labels.RemoveAt(index);
    }
    
0 голосов
/ 21 января 2019
var firstNames = new [] { lblFirstName1, lblFirstName2 , lblFirstName3 , .......... };

for(int i = 0; i < names.Count; i++)
        {
            Random rand = new Random();
            int index = rand.Next(names.Count);
            var name = names[index];

            firstNames[i].Text = name;
            firstNames[i].Visible = true;
            names.RemoveAt(index);
        }  
...