私のフォームは次のようになります。
ご覧のとおり、たくさんのテキストボックスがあります。すべてのテキストボックスが空、null、または数字のみを含むかどうかを確認するためのループを作成しました。
今私がやりたいことは、乱数を生成し、それらをすべての空のテキストボックスに配置することです(ユーザーがテキストボックスに数字を入力するのと同じように)。どうすればこの結果を達成できますか?
私のフォームは次のようになります。
ご覧のとおり、たくさんのテキストボックスがあります。すべてのテキストボックスが空、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 に指定できます。
Textboxの場合、コントロールごとに Form.Controls テストでループします。そして、これらのケースでは、それらをキャストして ((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();
}
}
}