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# の 1 年生なので、学ぶことがたくさんあることはわかっていますが、これを機能させるために Google のスキルを使い果たしました。私がやろうとしているのは、マッチングプログラムを作ることです。このプログラムには、「button1」、「button2」などのラベルが付いた 12 個のボタンがあります。ボタンをクリックすると、ランダムな配列から提供されるタグが表示されます。単一のボタンタグのみを割り当てるランダム機能を取得しました。私がハングアップしているのは、グループボックス内のすべてのボタンに対してこれを繰り返すことです。foreach 会場を試しましたが、うまく動作しませんでした。結局、他の方法も試しました。どこに行こうか迷ったので立ち寄ったのが以下。私が持っている2つの主要な質問は

  1. ランダムな文字列をワイルドカード ボタン タグに割り当てるにはどうすればよいですか?
  2. 12 個の車の名前を 12 個のボタンにランダムに割り当てる最良の方法は何ですか? 2 つの配列の使用?
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 に答える