2014-10-30 6 views
1

저는 C#에 관해서 새로운 것입니다. 1 년 동안 C 프로그래밍을 배웠습니다.C# 간단한 등록 양식을 작성하여 오류 메시지 표시

나는 사용자가 등록 양식을 작성하도록 요청하는 Window Form을 만들었습니다.

My registration form

I는 필드가 작성되지 또는 필드가 잘 사용하지 않는 경우의 버튼 아래에 에러 메시지를 표시 할.

private void button1_Click(object sender, EventArgs e) 
    { 
     if (!isOkay(userTextBox.Text)) 
     { 
      label5.Text = "Please, enter an username."; 
      label5.Visible = true; 
     } 
     else if (!isOkay(mailTextBox.Text)) 
     { 
      label5.Text = "Please, enter a mail address."; 
      label5.Visible = true; 
     } 
     else if (!confirmMailTextBox.Text.Equals(mailTextBox.Text) || !isOkay(confirmMailTextBox.Text)) 
     { 
      label5.Text = "Please, match both mails addresses."; 
      label5.Visible = true; 
     } 
     else if (!isOkay(passwordTextBox.Text)) 
     { 
      label5.Text = "Please, enter a password."; 
      label5.Visible = true; 
     } 
     else 
     { 
      label5.Text = "Valid form, yay !"; 
      label5.Visible = true; 
     } 
    } 

    private Boolean isOkay(string textBoxContent) 
    { 
     return (textBoxContent.Length > 0 || textBoxContent.Equals(null)); 
    } 

그것을 제대로 할 수있는 우아한 또는 최적화 방법이 있습니다 :

나는이 기본 코드를 사용? 일부 오류 공급자를 찾았지만 분명히 오류 공급자가 팝업을 열었으며 단추 아래에 빨간색 오류 메시지가 표시되기를 원합니다.

몇 가지 도움을 줄 수 있습니까? 그/그녀가 오류를받을 때 :

+0

확인이 문서 http://www.codeproject.com/Articles/13922/Validate-user-input-in- 예를 들어 당신의 텍스트 상자 중 하나에 대한

Windows-Forms –

+0

확인할 수있는 텍스트 상자가 4 개 밖에 없으므로 '확인 버튼'뒤에있는 코드에서 해당 기능을 모두 확인하고 호출하는 기능을 작성한 것으로 생각해 봤습니까? – smr5

답변

0

는 (사용자에 대한) 다음

private void button1_Click(object sender, EventArgs e) 
{ 
    RequiredFieldsError rfe = new RequiredFieldsError(); 

    if (!isOkay(userTextBox.Text)) 
     rfe.AddField("User name missing, Please, enter an username."; 
    if (!isOkay(mailTextBox.Text)) 
     rfe.AddField("Email address missing, Please, enter a mail address."; 
    if (!confirmMailTextBox.Text.Equals(mailTextBox.Text) || !isOkay(confirmMailTextBox.Text)) 
     rfe.AddField("Email address doesn't match the confirmation email"); 
    if (!isOkay(passwordTextBox.Text)) 
     rfe.AddField("Password missing, Please, enter a password."; 

    if(rfe.Count > 0) 
    { 
     // MessageBox.Show(rfe.ToString()); 
     label5.Text = rfe.ToString() 
     label5.Visible = true; 
    }  
} 

이 방식으로 코드를 변경 할 수있는 무기력하게 상황이

public class RequiredFieldsError 
{ 
    private List<string> errors; 
    public RequiredFieldsError() 
    { 
     errors = new List<string>(); 
    } 
    public int Count 
    { 
     get{return errors.Count;} 
    } 
    public void AddField(string errorField) 
    { 
     errors.Add(errorField); 
    } 
    public override string ToString() 
    { 
     if(errors.Count == 0) 
      return string.Empty; 
     else 
     { 
      string fields = string.Join(Environment.NewLine, errors); 
      fields = "The following fields contains errors:" + Environment.NewLine + fields; 
      return fields; 
     } 
    } 
} 

같은 클래스를 방지 감안할 때 메시지를 보내면 양식을 확인하려고 할 때 다른 오류 메시지가 표시되도록 수정합니다.

물론 가능한 모든 메시지를 표시하거나 메시지 상자 만 사용하려면 레이블의 높이가 충분해야합니다.

나는

private Boolean isOkay(string textBoxContent) 
{ 
    return !string.IsNullOrWitheSpace(textBoxContent)); 
} 

이 또한 하나 이상의 공백으로 구성된 문자열을 처리 할에 IsOkay 기능을 변경하는 것이 좋습니다. (null이 아니고 length == 0이 아님)

0

ErrorProvider를 사용할 수 있습니다. 텍스트 상자 뒤에 오류 아이콘이 표시됩니다.

 if (!isOkay(userTextBox.Text)) 
    { 
     errorProvider1.SetError(userTextBox "yourmessage"); 
    } 
    else{ 
     errorProvider1.Clear(); 
    } 

링크 : http://www.dotnetperls.com/errorprovider