C#为每个TxtBox分配一个数组索引?

时间:2017-09-28 12:50:54

标签: c# loops textbox

我正在寻找一种比我这里更优雅的解决方案

{
    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();但这是我能做到的唯一方法,是否有一个更明显的解决方案我没想到?

1 个答案:

答案 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();
    }
}