Как я могу проверить несколько текстовых полей на null или пустоту без уникального теста для каждого?

У меня есть около 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();
        }

Почему программа не находит никакого текста в моих текстовых полях, основываясь на коде выше?

9
задан Fuzz Evans 5 January 2012 в 22:05
поделиться