C#-使用foreach循环加载文本框

C#-使用foreach循环加载文本框,c#,C#,我回来寻找如何将数组加载到特定文本框中的解决方案。前几天我发布了一个类似的问题。提供的答案是好的,但是现在我认为在代码中的定位有问题。这就是我所拥有的: private void btnQuickPlayNumbers_Click(object sender, EventArgs e) { int randCheck = 0; Random rand = new Random(); int[] powerball5 = new

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

    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++;
            }                
        }
    }
private void btnQuickPlayNumbers\u单击(对象发送方,事件参数e)
{
int-randCheck=0;
Random rand=新的Random();
int[]powerball5=新int[5];
对于(int i=0;i
现在,这加载了我的论坛上的所有文本框,这很好,但它加载了所有文本框中相同的数字。这是一个powerball程序,我需要将阵列加载到框中,以便:

textbox1=powerball5[0]; textbox2=powerball5[1]; 等等,等等


我总共有5个箱子要装。我们得出结论,将相同的数字加载到所有循环中的原因是foreach循环的位置不允许加载数组和递增计数器。我尝试过移动它,甚至创建它自己的方法,但是当我按照它自己的方法做时,我得到了一个索引超出范围的错误。所以我有点不知所措了。任何帮助都将非常感激。如果你需要更多的信息,我会尽力更新,以满足每个人的需要。再次感谢您抽出时间。

此代码将相同的数字加载到每个文本框中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];
}
int[]whiteNumbers=DrawPowerballWhites();
//应该在它自己的函数中——DisplayPowerBallNumber(int[]whites,int powerball)
var whitetextboxs=this.Controls
第()类
.其中(t=>IsWhiteTextbox(t))
.Select((textbox,index)=>new{textbox,index});
foreach(白色文本框中的var indexedTextBox)
{
indexedTextbox.textbox.Text=白数[indexedTextbox.index];
}

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

    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++;
    }
int-randCheck=0;
Random rand=新的Random();
int[]powerball5=新int[5];
TextBox[]textboxs=新的TextBox[5];
整数计数=0;
for(int i=0;i
我以前见过,random类使用在主机上生成的看起来随机的数字,但是它大约每20-30毫秒刷新一次,因此您的“for”循环移动得太快,以至于random不会刷新,请尝试添加“
system.threading.thread.sleep(25)””编码到for循环中。

这是WinForms、ASP.NET还是WPF/Silverlight?WinForms,很抱歉。我不了解此UI。您正在使用文本框允许用户编辑彩票号码?使用标签、列表框或列表视图。如果您需要一个标签数组,那么只需在代码中创建一个,而不是稍后再尝试查找标签。顺便说一句,强力球彩票不允许同一号码出现两次,你需要洗牌。第七逻辑为什么你要发布昨天发布的相同代码。。?链接被关闭了
那里的答案对你有用吗
我认为你真的需要看看你拥有的代码,开始调试现有代码以及昨天提供给你的代码<代码>i++
需要在foreach循环中`我建议看看如何在foreach循环和While循环中增加变量..我同意这一点,并尝试过。我从中得到的只是一个索引超出范围的错误。我认为答案是可行的,在与我的班级和教授坐下来讨论后,我们想出了一个解决方案,但我还没有机会实施。最后一个问题已结束,因此我重新发布。谢谢您的帖子。很遗憾,我要工作到今晚晚些时候,所以在那之前我没有机会测试这个。也谢谢你的帖子。我感谢在这里提出的所有评论和努力。我要到今晚晚些时候才能看这么多,但再次感谢你们!