每次单击按钮时,选择并显示随机组框

时间:2017-11-12 13:06:10

标签: c# winforms random groupbox

我正在进行一个问答游戏,其中一个级别将填补空白。在这个级别中,我已经布置了10个不同的组合框,每个组合框中都有标签和文本框。我希望每次单击下一个按钮时能够随机选择一个不同的组框。单击检查按钮后,将显示下一个按钮,以检查文本框中的用户答案并更改分数变量。我需要确保相同的组框不会出现两次。

private void frmLevel1_Load(object sender, EventArgs e)
    {
        groupBoxList.Clear();
        btnNext.Hide();
        this.BackgroundImage = gameClass.background;

        groupBoxList.Add(groupBox1);
        groupBoxList.Add(groupBox2);
        groupBoxList.Add(groupBox3);
        groupBoxList.Add(groupBox4);
        groupBoxList.Add(groupBox5);
        groupBoxList.Add(groupBox6);
        groupBoxList.Add(groupBox7);
        groupBoxList.Add(groupBox8);
        groupBoxList.Add(groupBox9);
        groupBoxList.Add(groupBox10);

        foreach (GroupBox box in groupBoxList) 
        {
            box.Hide();

        }

        Random groupBoxChooser = new Random(); }

1 个答案:

答案 0 :(得分:0)

您需要Random.Next()来绘制幸运数字:

var luckyNumber = groupBoxChooser.Next(0,groupboxList.Count);

如果您希望其他方法也可以使用,则应将随机数选择器设为字段而不是局部变量,因此将此行从Form Load事件中移出到类中:

Random groupBoxChooser = new Random();

然后,您需要indexer来访问列表中的项目

groupboxList[luckyNumber].Show();

因为它仍然不适合你,这是我的完整代码:

using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace GroupBoxRnd
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        IList<GroupBox> groupboxList = new List<GroupBox>();
        Random groupBoxChooser = new Random();

        private void Form1_Load(object sender, EventArgs e)
        {
            // Find all group boxes
            foreach (Control control in Controls)
            {
                if (control.GetType() == typeof(GroupBox))
                    groupboxList.Add((GroupBox)control);
            }

            // Hide all of them
            foreach (GroupBox box in groupboxList)
            {
                box.Hide();
            }

            // Show a random one
            var luckyNumber = groupBoxChooser.Next(0, groupboxList.Count);
            groupboxList[luckyNumber].Show();
        }
    }
}