繁体   English   中英

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

[英]C# Assign Each TxtBox a array index?

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

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

将您的盒子放到一个数组中,删除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();
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM