-1

我正在寻找有关如何将我的数组加载到某些文本框中的解决方案。前几天我发布了一个类似的问题。提供的答案很好,但是现在我遇到了我认为在代码中定位的问题。这就是我所拥有的:

    private void btnQuickPlayNumbers_Click(object sender, EventArgs e)
    {
        int randCheck = 0;

        Random rand = new Random();

        int[] powerball5 = new int[5];

        for (int i = 0; i < powerball5.Length; )
        {
            randCheck = rand.Next(0, 60);

            while (!(powerball5.Contains(randCheck)))
            {
                powerball5[i] = randCheck;

                foreach (Control x in this.Controls)
                {
                    if (x is TextBox)
                    {
                        ((TextBox)x).Text = powerball5[i].ToString();                            
                    }
                }

                i++;
            }                
        }
    }

现在这会加载我论坛上的所有文本框,这很好,但是它在所有文本框中加载了相同的数字。这是一个强力球程序,我需要将我的数组加载到盒子中:

文本框1 = 强力球5[0];文本框2 = 强力球5[1];等等,等等。

我一共有 5 个要加载的盒子。我们得出的结论是,将相同的数字加载到所有这些中的原因是 foreach 循环的位置不允许加载数组和增加计数器。我尝试过移动它,甚至制作自己的方法,但是当我按照自己的方法进行操作时,我得到一个索引超出范围错误。所以我有点不知道该怎么做。任何帮助将不胜感激。如果您需要更多信息,我会尽力更新,以满足每个人的需求。再次感谢您的宝贵时间。

4

3 回答 3

0

我以前见过这个,随机类使用在主机上生成的随机数字,但是它大约每 20-30 毫秒刷新一次,所以你的“for”循环移动得如此之快以至于随机数不会刷新,尝试添加一个' system.threading.thread.sleep(25);' 进入你的 for 循环。

于 2013-02-14T03:35:08.857 回答
0

此代码将相同的数字加载到每个文本框中 5 次,因此您只能获得最后一个数字。

            foreach (Control x in this.Controls)
            {
                if (x is TextBox)
                {
                    ((TextBox)x).Text = powerball5[i].ToString();                            
                }
            }

您可能应该将其结构更像这样:

int[] whiteNumbers = DrawPowerballWhites();

// should be in its own function -- DisplayPowerballNumbers(int[] whites, int powerball)
var whiteTextboxes = this.Controls
                         .OfType<TextBox>()
                         .Where(t => IsWhiteTextbox(t))
                         .Select((textbox,index) => new {textbox, index});

foreach(var indexedTextBox in whiteTextboxes)
{
   indexedTextbox.textbox.Text = whiteNumbers[indexedTextbox.index];
}
于 2013-02-14T00:53:17.477 回答
0

要匹配您的代码,您可以使用以下命令:

    int randCheck = 0;

    Random rand = new Random();

    int[] powerball5 = new int[5];
    TextBox[] textboxes = new TextBox[5];
    int count = 0;



    for (int i = 0; i < powerball5.Length; i++)
    {
        randCheck = rand.Next(0, 60);

        do
        {
            randCheck = rand.Next(0, 60);
        } while (Array.IndexOf(powerball5, randCheck) != -1);
        powerball5[i] = randCheck;
    }

    foreach (TextBox x in this.Controls)
    {
            x.Text = powerball5[count].ToString();
            count++;
    }
于 2013-02-14T01:01:18.670 回答