2
{
  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 个按钮的最佳方法是什么?使用两个数组?
4

2 回答 2

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当我发现未使用的汽车名称时,我也清空了。

于 2012-12-13T14:49:37.573 回答
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];
        }
    }
于 2012-12-13T14:33:34.703 回答