2013-05-14 1 views
0

나는 C#으로 작성된 창을 가지고 있으며 데이터를 데이터베이스에 저장하기 전에 각 컨트롤 (드롭 다운, 텍스트 상자 등)의 데이터가 null이 아닌지 확인하려고합니다. 나는이 응용 프로그램에서 이와 같은 여러 형태가 있습니다. 그 일을 내가 어떻게 할까? 내가 부울 함수를 만들 생각입니다.Windows Form에서 컨트롤 확인

+0

모델에 바인딩 된 데이터를 제어합니까? –

+0

은 ADO로 바인딩됩니다. db에서 null을 허용하지 않도록 설정되어 있지만 다양한 사용자의 코드가 아니라 응용 프로그램에서 오류 처리를 원합니다. 제출하기 전에 메시지를 작성하여 필요한 모든 데이터를 입력하십시오. –

답변

2

폼의 컨트롤을 통해 루프하는 간단한 방법을 작성하고, 제어 값을 확인할 수를 호출하는 이벤트 핸들러.

private bool CheckControls() 
    { 
     foreach (Control ctrl in this.Controls) 
     { 
      //Write the code to check whether the control value is null 
      //case: Testbox return true; 
      //case: Dropdown return true; 
      //case: Listbox return true; 
      //..etc 

     } 
     return false; 
    } 
+0

나는 당신이 묘사 한 것과 정확히 똑같은 일을하는 오래된 vb 애플리케이션을 사용했다. 감사! –

1

ErrorProvider를 사용하십시오. 폼에 오류 공급자를 넣은 다음 한 번의 호출로 모든 컨트롤을 처리 할 수있는 유틸리티 함수를 가질 수 있습니다. 나는 텍스트 박스에 무엇인가가 입력되었는지 확인하기 위해 다음 코드를 사용했다.이 메소드를 확장 할 수있다.

필수 입력란을 처리하는 유틸리티 메소드로, 태그 입력란을 사용하여 다른 오류 메시지가 표시되지 않았으므로 특정 오류 메시지를 보관하는 데 사용 했으므로 빠르고 간편했습니다.

public static void TextBoxRequired_Validating(object sender, CancelEventArgs e, ErrorProvider errorProvider) 
{ 
    var textbox = (TextBox)sender; 
    var valid = !String.IsNullOrWhiteSpace(textbox.Text); 
    e.Cancel = !valid; 
    errorProvider.SetError(textbox, (valid ? string.Empty : textbox.Tag.ToString())); 
} 

유틸리티 메소드

void txtName_Validating(object sender, CancelEventArgs e) 
{ 
    ControlUtility.TextBoxRequired_Validating(sender, e, errorProvider1); 
} 
+0

고마워요! 나는이 코드의 일부를 내 코드에 사용했다. –