У меня есть около 20 текстовых полей на форме, которую может заполнить пользователь. Я хочу предложить пользователю подумать о сохранении, если в любом из текстовых полей что-то набрано. Сейчас проверка для этого очень длинная и муторная:
if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) ||
string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests
Есть ли способ использовать что-то вроде Array of any, где массив состоит из текстовых полей и я проверяю его таким образом? Какие еще способы могут быть очень удобными для того, чтобы проверить, были ли сделаны какие-либо изменения с момента запуска программы?
Еще одна вещь, о которой я должен упомянуть, - это переключатель даты и времени. Я не знаю, нужно ли мне тестировать это, поскольку datetimepicker никогда не будет нулевым или пустым.
EDIT: Я включил ответы в свою программу, но не могу заставить ее работать правильно. Я настроил тесты как показано ниже и продолжаю вызывать 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();
}
Почему программа не находит никакого текста в моих текстовых полях, основываясь на коде выше?