Select 并在每次单击按钮时显示一个随机分组框
Select and display a random group box each time a button is clicked
我正在制作一个问答游戏,其中一个关卡将填空。在这个关卡中,我布置了 10 个不同的组框,每个组框都有一个标签和文本框。每次单击下一个按钮时,我希望能够随机 select 一个不同的组框。单击检查按钮以检查文本框中的用户答案并更改分数变量后,将出现下一个按钮。我需要确保同一个组框不会出现两次。
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(); }
抽取幸运数字需要Random.Next()
:
var luckyNumber = groupBoxChooser.Next(0,groupboxList.Count);
如果您希望它也适用于其他方法,您应该将随机数选择器设置为一个字段而不是局部变量,因此将此行从 Form Load 事件移到 class 中:
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();
}
}
}
我正在制作一个问答游戏,其中一个关卡将填空。在这个关卡中,我布置了 10 个不同的组框,每个组框都有一个标签和文本框。每次单击下一个按钮时,我希望能够随机 select 一个不同的组框。单击检查按钮以检查文本框中的用户答案并更改分数变量后,将出现下一个按钮。我需要确保同一个组框不会出现两次。
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(); }
抽取幸运数字需要Random.Next()
:
var luckyNumber = groupBoxChooser.Next(0,groupboxList.Count);
如果您希望它也适用于其他方法,您应该将随机数选择器设置为一个字段而不是局部变量,因此将此行从 Form Load 事件移到 class 中:
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();
}
}
}