0

我的表格如下所示:

在此处输入图像描述

如您所见,有一堆 texboxes。我为所有文本框创建了一些循环,以检查它们是否为空、null 或是否仅包含数字。

现在我想做的是生成随机数并将它们放入所有空文本框中(就像用户在文本框中键入数字一样)。我怎样才能达到这个结果?

4

5 回答 5

4

Random将帮助您生成随机数:

var random = new Random();
var emptyTextBoxes = Controls.OfType<TextBox>()
                             .Where(txt => txt.Text.Length == 0);
foreach (var txt in emptyTextBoxes)
    txt.Text = random.Next(1, 1000).ToString();
于 2012-07-05T22:27:49.390 回答
1

听起来您已经有了一个可以迭代所有文本框的循环。在该循环的主体中,添加类似

Random rnd = new Random();

// Do you loop here

    if (string.IsNullOrEmpty(textBox.Text))
        textBox.Text = rnd.Next(10, 99).ToString(); // If you want numbers from 10 to 99

// End of your loop

如果出于某种原因您总是希望在文本框中具有相同的值,您可以使用Random(int seed)构造函数为 Random 指定一个种子。

于 2012-07-05T22:24:51.247 回答
1
  1. 生成一个随机数。使用 Math.Random 和另一个数学运算来实现这一点。取决于你想要什么样的数字(整数、正数、最多 100 等)
  2. 循环在 Form.Controls 测试每个控件,如果它是 Textbox。并且,对于这些情况,将它们转换并设置像 ((Textbox)control).Text = randomNumber 这样的值

        int randomNumber;
        foreach (Control control in this.Controls)
        {
            randomNumber = //your randomMagic
    
            if (control is TextBox)
            {
                ((TextBox)control).Text = randomNumber;
            }
        }
    

希望这可以帮助

于 2012-07-05T22:25:25.423 回答
1
       Random r = new Random();
       foreach (var ctrl in Controls)
       {
           var txtBoxCtrl = ctrl as TextBox;
           if (txtBoxCtrl != null)
           {
               if (string.IsNullOrEmpty(txtBoxCtrl.Text))
                   txtBoxCtrl.Text = r.Next().ToString();
           }
       }
于 2012-07-05T22:26:53.990 回答
0
private void Form1_Load(object sender, EventArgs e)
{
    Random random = new Random();
    foreach (Control c in this.Controls)
    {
        if(c.GetType().Name == "TextBox")
        {
            c.Text = random.Next().ToString();
        }
    }
}
于 2012-07-05T22:34:30.737 回答