我的表格如下所示:
如您所见,有一堆 texboxes。我为所有文本框创建了一些循环,以检查它们是否为空、null 或是否仅包含数字。
现在我想做的是生成随机数并将它们放入所有空文本框中(就像用户在文本框中键入数字一样)。我怎样才能达到这个结果?
我的表格如下所示:
如您所见,有一堆 texboxes。我为所有文本框创建了一些循环,以检查它们是否为空、null 或是否仅包含数字。
现在我想做的是生成随机数并将它们放入所有空文本框中(就像用户在文本框中键入数字一样)。我怎样才能达到这个结果?
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();
听起来您已经有了一个可以迭代所有文本框的循环。在该循环的主体中,添加类似
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 指定一个种子。
循环在 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;
}
}
希望这可以帮助
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();
}
}
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();
}
}
}