10 個のテキスト ボックスがありますが、ボタンをクリックしたときに空でないことを確認したいと思います。私のコードは次のとおりです。
if (TextBox1.Text == "")
{
errorProvider1.SetError(TextBox1, "Please fill the required field");
}
個人ごとに書くのではなく、一度にすべてのテキストボックスをチェックできる方法はありますか?
はいあります。
まず、すべてのテキスト ボックスを一連の形式で取得する必要があります。たとえば、次のようになります。
var boxes = Controls.OfType<TextBox>();
次に、それらを繰り返し処理し、それに応じてエラーを設定できます。
foreach (var box in boxes)
{
if (string.IsNullOrWhiteSpace(box.Text))
{
errorProvider1.SetError(box, "Please fill the required field");
}
}
または +string.IsNullOrWhiteSpace
の代わりに使用して、スペースやタブなどで満たされたテキスト ボックスにエラーをマークすることをお勧めします。x == ""
string.IsNullOrEmpty
最適なソリューションではないかもしれませんが、これも機能するはずです
public Form1()
{
InitializeComponent();
textBox1.Validated += new EventHandler(textBox_Validated);
textBox2.Validated += new EventHandler(textBox_Validated);
textBox3.Validated += new EventHandler(textBox_Validated);
...
textBox10.Validated += new EventHandler(textBox_Validated);
}
private void button1_Click(object sender, EventArgs e)
{
this.ValidateChildren();
}
public void textBox_Validated(object sender, EventArgs e)
{
var tb = (TextBox)sender;
if(string.IsNullOrEmpty(tb.Text))
{
errorProvider1.SetError(tb, "error");
}
}
編集:
var controls = new [] { tx1, tx2. ...., txt10 };
foreach(var control in controls.Where(e => String.IsNullOrEmpty(e.Text))
{
errorProvider1.SetError(control, "Please fill the required field");
}