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