【问题标题】:how to show two seperate random items from 2 listbox into a messagebox?如何将两个列表框中的两个单独的随机项显示到消息框中?
【发布时间】:2014-08-03 01:22:10
【问题描述】:

我有 2 个列表框,一个用于“名称”,一个用于“他们做了什么”他们想要进入 2 列表框。我有一个创建按钮,它会在消息框中显示结果,这很简单,但我希望它每次都显示一个随机组合。

因此,在“姓名”列表框中,我可以输入 Jerry、Dean、Mary 的名字,而在“他们做了什么”中,我可以输入 Sat、Slept、Cried。在按下创建按钮时,我想要两个列表中的随机项目,因此结果可能是“Dean Cried”,然后在我下次按下创建时,它可能是“Jerry Slept”

在每次按下名称框中的创建按钮时,我已经能够在一些帮助下获得一个随机项目,但我无法让我的代码同时实现这两个项目。

    private void btnaddname_Click(object sender, EventArgs e)
    {
        stringname = textBoxname.Text;
        textBoxname.Clear();
        listboxname.Items.Add(stringname);    
    }


    private void btnaddwhat_Click(object sender, EventArgs e)
    {
        stringwhat = textBoxwhat.Text;
        textBoxwhat.Clear();
        listBoxwhat.Items.Add(stringwhat);
    }


    private void buttoncreate_Click(object sender, EventArgs e)
    {
        Random random = new Random();
        int randomNumber = random.Next(1, listboxname.Items.Count);
        listboxname.Select();
        listboxname.SelectedItem = listboxname.Items[randomNumber];


        Random randomwhat = new Random();
        int randomnumwhat = randomwhat.Next(1, listBoxwhat.Items.Count);
        listBoxwhat.Select();
        listBoxwhat.SelectedItem = listBoxwhat.Items[randomnumwhat];

        MessageBox.Show(listboxname.SelectedItem.ToString() + (" ") + (listBoxwhat.SelectedItem.ToString()));

    }

【问题讨论】:

  • 我看不到任何明显的东西。您能否详细说明“我无法让我的代码同时实现这两者”?你遇到了什么错误?你试过调试吗?相关的事件处理程序肯定会被解雇吗?另外(顺便说一句),我认为将这段代码放在相关的 SE 网站上进行审查可以极大地受益,因为它们可以帮助您解决一些问题(命名约定、不必要的括号等)。
  • 我没有收到任何实际错误,但是一旦我尝试输入代码以使第二个列表框在我按“创建”时随机显示,它只会显示所选项目而不是使它们随机,它会每次都得出相同的结果。如果我不输入代码来使第二个列表框随机,那么结果会使第一个列表框中的项目随机,第二个只是选定的项目。

标签: c# string visual-studio-2010 button random


【解决方案1】:

尝试只创建一个随机变量并将其用于两个列表...

Random random = new Random();
int randomNumber = random.Next(1, listboxname.Items.Count);
listboxname.Select();
listboxname.SelectedItem = listboxname.Items[randomNumber];


int randomnumwhat = random.Next(1, listBoxwhat.Items.Count);
listBoxwhat.Select();
listBoxwhat.SelectedItem = listBoxwhat.Items[randomnumwhat];

MessageBox.Show(listboxname.SelectedItem.ToString() + (" ") +(listBoxwhat.SelectedItem.ToString()));

【讨论】:

  • 确切地说,如果您在足够近的时间内创建 Random 类的新实例,它们将生成相同的序列,因为它们都由系统时钟播种(除非在构造函数中另有说明)始终创建一个实例化并尽可能地重用它。
  • 工作,谢谢!我现在可以看到我哪里出错了,不会再犯这个错误
猜你喜欢
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多