사용자가 작성할 수있는 양식에 약 20 개의 텍스트 필드가 있습니다. 사용자가 텍스트 상자에 입력 한 내용이 있으면 저장할지 묻는 메시지를 표시하려고합니다. 지금 그에 대한 테스트는 정말 길고 지저분한이다 : 나는 배열이 텍스트 상자 구성되어 나는 그런 식으로 확인 어떤의 배열, 같은 것을 사용할 수있는 방법은각각에 대해 고유 한 테스트없이 null 또는 비어있는 경우 여러 텍스트 상자를 검사하려면 어떻게합니까?
if(string.IsNullOrEmpty(txtbxAfterPic.Text) || string.IsNullOrEmpty(txtbxBeforePic.Text) ||
string.IsNullOrEmpty(splitContainer1.Panel2) ||...//many more tests
있습니까? 프로그램을 시작한 이후에 변경 사항이 있는지 확인하기위한 다른 방법은 무엇입니까?
내가 언급해야 할 다른 한 가지는 날짜 선택 도구입니다. 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();
}
왜 위의 코드를 기반으로 텍스트 상자에 텍스트가 없습니까?
사이드 노트 : 표준의 콘센트를 of-the-Box TextBox 컨트롤은 텍스트 속성에 null 값을 반환하지 않습니다. LINQ의 좋은 사용! +1 –
메시지 상자를 한 번만 던지면 대답이 더 좋습니다. 'Foreach'문은 MessgeBox.Show ("모든 정보를 입력하십시오")를 여러 번 throw합니다. –