我正在寻找一种比我这里更优雅的解决方案
{
public partial class Form1 : Form
{
private int[] randomArray = new int[7];
int Min = 1;
int Max = 60;
Random rand = new Random();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
genBtn.Focus();
}
private void genBtn_Click(object sender, EventArgs e)
{
for (var i = 0; i < randomArray.Length; i++)
{
randomArray[i] = rand.Next(Min, Max); // Remember to assign random number
}
boxNum1.Text = randomArray[0].ToString();
boxNum2.Text = randomArray[1].ToString();
boxNum3.Text = randomArray[2].ToString();
boxNum4.Text = randomArray[3].ToString();
boxNum5.Text = randomArray[4].ToString();
boxNum6.Text = randomArray[5].ToString();
boxNum7.Text = randomArray[6].ToString();
}
private void pictureBox1_Click(object sender, EventArgs e)
{
}
}
}
我讨厌boxNum1.Text - randomArray [0] .ToString();但这是我能做到的唯一方法,是否有一个更明显的解决方案我没想到?
答案 0 :(得分:0)
将您的框放入数组,移除randomArray
,然后直接指定Text
属性:
private void genBtn_Click(object sender, EventArgs e) {
foreach (box in new[]{boxNum1, boxNum2, boxNum3, boxNum4, boxNum5, boxNum6, boxNum7}) {
box.Text = rand.Next(Min, Max).ToString();
}
}
我想[创建一个文本框数组
您可以在类级别而不是在本地级别创建数组:
private readonly TextBox[] allBoxes;
public Form1() {
InitializeComponent();
allBoxes = new TextBox[] {
boxNum1, boxNum2, boxNum3, boxNum4, boxNum5, boxNum6, boxNum7
};
}
private void genBtn_Click(object sender, EventArgs e) {
foreach (box in allBoxes) {
box.Text = rand.Next(Min, Max).ToString();
}
}