根据数组中的随机项分配按钮标记

时间:2012-12-13 14:28:17

标签: c# arrays button random tags

{
  var buttonnameString = new List<string> { "button1", ... , "button12" };
  for(int i = 0; i < 12; i++)
  {
    // Random car assignment to button 
    Random myRandom = new Random();
    var carString = new List<string> { "Camaro", ... , "Model T" };
    int index = myRandom.Next(carString.Count);
    var name = carString[index];
    carString.RemoveAt(index);
    Tag = name.ToString(); 
  }
}

提前感谢您提供的任何帮助。我是C#学生的第一年,所以我知道我有很多需要学习的东西,但是我已经用尽了谷歌的技巧,试图让它发挥作用。 我正在尝试做的是做一个匹配的程序。该程序将有12个按钮,标记为“button1”,“button2”....等。单击该按钮时,它将显示它的标记,该标记由随机数组提供。我已经获得了随机功能,只能分配一个按钮标签。在我挂断的地方,重复这一点到组合框中的所有按钮。我已经尝试了foreach场地,但无法让它成功运作。最后我也尝试了其他方法。下面是我停下来的地方因为我不确定要去哪里。我有两个主要问题是

  1. 如何将随机字符串分配给通配符按钮标记?
  2. 将12个车名随机分配到12个按钮的最佳方法是什么?使用两个数组?

2 个答案:

答案 0 :(得分:1)

试试这个:

{
  var numOfButtons = 12;
  var matchingButtonIndex = 0;
  // Random car assignment to button 
  Random myRandom = new Random();
  var buttons = new List<Button> { button1, ... , button12 };
  var carString = new List<string> { "Camaro", ... , "Model T" };
  while (matchingButtonIndex < numOfButtons)
  {
    int index = myRandom.Next(carString.Count);
    var name = carString[index];
    if (name != null)
    {
      buttons[matchingButtonIndex].Tag = name;
      carString[index] = null;
      matchingButtonIndex = matchingButtonIndex + 1;
    }
  }
}

注意我已将按钮名称数组更改为按钮数组。当我找到未使用的车名时,我也清空了carString

答案 1 :(得分:0)

当您遍历表单的控件

时,迭代按钮很容易
var carString = new List<string> { "Camaro", "Mini Cooper", "Porsche 944", "Ford Focus", "Chevy Blazer", "Model T", "Camaro", "Mini Cooper", "Porsche 944", "Ford Focus", "Chevy Blazer", "Model T" };

    foreach(Control c in Controls)
    {
        if (c is Button)
        {
            Random myRandom = new Random();
            int index = myRandom.Next(carString.Count);
            c.Tag = carString[index];
        }
    }