ユーザーが入力できるフォームに約 20 のテキスト フィールドがあります。テキストボックスに何か入力した場合、保存を検討するようユーザーに促したいと思います。今のところ、そのテストは本当に長くて面倒です:
if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) ||
string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests
配列がテキストボックスで構成されている配列のようなものを使用する方法はありますか?そのようにチェックしますか? プログラムが開始されてから変更が加えられたかどうかを確認するための非常に便利な方法として、他にどのような方法がありますか?
もう 1 つ言及する必要があるのは、日時ピッカーがあることです。datetimepicker が null または空になることは決してないため、それについてテストする必要があるかどうかはわかりません。
編集:答えをプログラムに組み込みましたが、正しく動作させることができないようです。以下のようにテストを設定し、Application.Exit() 呼び出しをトリガーし続けます。
//it starts out saying everything is empty
bool allfieldsempty = true;
foreach(Control c in this.Controls)
{
//checks if its a textbox, and if it is, is it null or empty
if(this.Controls.OfType<TextBox>().Any(t => string.IsNullOrEmpty(t.Text)))
{
//this means soemthing was in a box
allfieldsempty = false;
break;
}
}
if (allfieldsempty == false)
{
MessageBox.Show("Consider saving.");
}
else //this means nothings new in the form so we can close it
{
Application.Exit();
}
上記のコードに基づいて、テキスト ボックスにテキストが見つからないのはなぜですか?