【问题标题】:How to get a button to randomly choose and display names from a list [closed]如何让按钮从列表中随机选择和显示名称[关闭]
【发布时间】:2015-12-06 15:39:10
【问题描述】:

我有一个名字列表。这些名称与标签相关联。当我单击标签时,会随机选择为该标签指定的名称。

我需要的是,当单击按钮时,它会为每个标签选择一个随机名称。

例如;

我在一个列表中有 5 个名字,每个单独的列表都链接到一个单独的标签。将随机选择一个名称作为标签。单击按钮时,我需要所有 10 个标签来选择一个随机名称。

希望这是有道理的。我在表单上使用 Visual Studio 2010 和 c#。非常感谢

【问题讨论】:

  • 10 个标签和 5 个名称。您希望标签中出现重复的名称吗?
  • What have you already tried?您是否有代码可以在单击按钮时将新文本分配给 10 个标签(这意味着您无法使值随机化)?到目前为止,您的代码看起来如何?
  • 你也可以从this related question中获得一些好处。

标签: c# visual-studio-2010 random


【解决方案1】:

这个问题很模糊。

但是,从字符串列表中选择随机字符串的方法如下所示:

 public string ChooseRandomName(List<string> names)
 {
     Random rnd = new Random();
     return names[rnd.Next(0, names.Count)];
 }

现在,唯一要做的就是使用正确的输入调用此方法,并将输出分配给正确的标签。不确定您的标签是如何给出的,但类似于:

label1.Text = ChooseRandomName(listOfNamesForLabel1);

我希望这会有所帮助。

【讨论】:

  • 您肯定需要为每个程序左右创建一个Random 对象,才能真正获得随机选择。也许让它成为一个静态字段或其他东西,并且只初始化一次。否则,这将很好地工作。
  • @joranvar - 正确。你的建议是一个更好的解决方案。我写的只是概念的快速证明。如果您连续多次调用它,它可能会返回相同的结果。提取 Random 对象并将其作为参数传入会更好。
【解决方案2】:
public string ChooseRandomName(List<string> names,Random rnd)
{
   return names[rnd.Next(0, names.Count)];
}
Random rnd = new Random();
label1.Text = ChooseRandomName(listOfNames,rnd);
label2.Text = ChooseRandomName(listOfNames,rnd);

不要每次都创建初始化随机对象。否则它将给出相同的值。 check this link

【讨论】:

    【解决方案3】:

    所以这就是我所拥有的。这是我需要的代码的一部分(不要担心它的内容)。守门员标签称为“守门员”,我的按钮应称为“pickTeam”,但单击时显示为“button1_Click”private void button1_Click(object sender, EventArgs e)

    我需要它,以便在单击按钮时,每个标签(我可以自己搞定)都会选择一个已给出的随机名称。 IE;贝戈维奇、德赫亚等。

    我对每个职位都有一个方法。这是守门员,一旦我知道这一点,我就可以在其他位置上做到这一点。谢谢

     private void goalkeeper_Click(object sender, EventArgs e)
            {
                Random rand = new Random();
                List<string> goalkeepers = new List<string>();
                goalkeepers.Add("Neuer");
                goalkeepers.Add("De Gea");
                goalkeepers.Add("Lloris");
                goalkeepers.Add("Begovic");
                for (int i = 0; i < 4; i++)
                {
                    int index = rand.Next(0, 4);
                    goalkeeper.Text = goalkeepers[index];
                }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-30
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2021-11-29
      • 1970-01-01
      • 1970-01-01
      • 2017-12-26
      相关资源
      最近更新 更多