2016-07-21 8 views
1

すべてのエントリをチェックするためにC#windowsフォームを作成すると、すべてのエントリが有効なときにメッセージボックスが表示されますが、 。おそらくこのすべてを行う方が簡単ですが、これをすべて行う方法も学ぶかもしれません。ここに私がこれまで持っていたものがあります。C#windowsフォームはすべてのエントリをチェックしてからメッセージボックスを表示する

private void btn_submit_Click(object sender, EventArgs e) 
    { 
     string name = txt_name.Text; 
     string email = txt_email.Text; 
     string address = txt_address.Text; 
     string course = txt_course.Text; 
     string phone = txt_phone.Text; 


     if (name.Length < 8) 
     { 
      txt_name.Text = "Invalid Name"; 
      txt_name.ForeColor = Color.Red; 
     } 
     else 
     { 
      txt_name.ForeColor = Color.Green; 

     } 

     if (email.Contains('@')) 
     { 
      if (email.Contains(".com") || email.Contains(".COM")) 
      { 

       txt_email.ForeColor = Color.Green; 
      } 
      else 
      { 
       txt_email.Text = "invalid Email"; 
       txt_email.ForeColor = Color.Red; 
      } 
     } 
     else 
     { 
      txt_email.Text = "invalid Email"; 
      txt_email.ForeColor = Color.Red; 
     } 

     if (address.Length < 12) 
     { 
      txt_address.Text = "invalid Address"; 
      txt_address.ForeColor = Color.Red; 
     } 
     else 
     { 
      txt_address.ForeColor = Color.Green; 
     } 
     if (course.Contains("Games Design") || course.Contains("Electronics") || course.Contains("Mobile Communications") || course.Contains("GAMES DESIGN") || course.Contains("ELECTRONICS") || course.Contains("MOBILE COMMUNICATIONS")) 
     { 
      txt_course.ForeColor = Color.Green; 
     } 
     else 
     { 
      txt_course.Text = "invalid Course"; 
      txt_course.ForeColor = Color.Red; 
     } 

     if (phone.Length < 8) 
     { 
      txt_phone.Text = "invalid Phone Number"; 
      txt_phone.ForeColor = Color.Red; 
     } 
     else 
     { 
      txt_phone.ForeColor = Color.Green; 
     } 

    } 
+0

答えは、bool型の検証メソッドを作成し、そこでコードを配置する以外は、私が行うことです。 – Missy

答えて

1

ブール値を追加して、検証に失敗した場合はどこでもfalseに設定できます。

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    string name = txt_name.Text; 
    string email = txt_email.Text; 
    string address = txt_address.Text; 
    string course = txt_course.Text; 
    string phone = txt_phone.Text; 
    bool formIsValid = true; 


    if (name.Length < 8) 
    { 
     txt_name.Text = "Invalid Name"; 
     txt_name.ForeColor = Color.Red; 
     formIsValid = false; 
    } 
    else 
    { 
     txt_name.ForeColor = Color.Green; 

    } 

    if (email.Contains('@')) 
    { 
     if (email.Contains(".com") || email.Contains(".COM")) 
     { 

      txt_email.ForeColor = Color.Green; 
     } 
     else 
     { 
      txt_email.Text = "invalid Email"; 
      txt_email.ForeColor = Color.Red; 
      formIsValid = false; 
     } 
    } 
    else 
    { 
     txt_email.Text = "invalid Email"; 
     txt_email.ForeColor = Color.Red; 
     formIsValid = false; 
    } 

    if (address.Length < 12) 
    { 
     txt_address.Text = "invalid Address"; 
     txt_address.ForeColor = Color.Red; 
     formIsValid = false; 
    } 
    else 
    { 
     txt_address.ForeColor = Color.Green; 
    } 
    if (course.Contains("Games Design") || course.Contains("Electronics") || course.Contains("Mobile Communications") || course.Contains("GAMES DESIGN") || course.Contains("ELECTRONICS") || course.Contains("MOBILE COMMUNICATIONS")) 
    { 
     txt_course.ForeColor = Color.Green; 
    } 
    else 
    { 
     txt_course.Text = "invalid Course"; 
     txt_course.ForeColor = Color.Red; 
     formIsValid = false; 
    } 

    if (phone.Length < 8) 
    { 
     txt_phone.Text = "invalid Phone Number"; 
     txt_phone.ForeColor = Color.Red; 
     formIsValid = false; 
    } 
    else 
    { 
     txt_phone.ForeColor = Color.Green; 
    } 

    if (formIsValid) 
    { 
     //submit the form 
    } 
    else 
    { 
     MessageBox.Show("Your error message here"); 
    } 

} 
1

それは簡単なことだ、あなたは無効なエントリの場合には、それは偽作り、最初は(IsAllValidEntries例えば)trueに設定し、状態を示すためにブール変数を導入することができます。条件がfalseの場合、ブール変数の値もfalseになります。以下のコードがお手伝いします:

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    // definitions 

    bool IsAllValidEntries = true; 

    if (name.Length < 8) 
    { 
     //code here 
     IsAllValidEntries = false; 
    } 
    else{ } 

    if (email.Contains('@')) 
    { 
     if (email.Contains(".com") || email.Contains(".COM")) 
     { 
      // your code here 
     } 
     else 
     { 
      //code here 
      IsAllValidEntries = false; 
     } 
    } 
    else 
    { 
     //code here 
     IsAllValidEntries = false; 
    } 

    if (address.Length < 12) 
    { 
     //code here 
     IsAllValidEntries = false; 
    } 
    else 
    { 
     txt_address.ForeColor = Color.Green; 
    } 
    if (course.Contains("Games Design") || course.Contains("Electronics") || 
    { 
     txt_course.ForeColor = Color.Green; 
    } 
    else 
    { 
     //code here 
     IsAllValidEntries = false; 
    } 

    if (phone.Length < 8) 
    { 
     //code here 
     IsAllValidEntries = false; 
    } 
    else 
    { 
     txt_phone.ForeColor = Color.Green; 
    } 

    if (IsAllValidEntries) 
     MessageBox.Show("Well done"); 
    else 
     MessageBox.Show("oooops!");  
} 
1

他の回答が正常に動作しますが、それは、独自の方法でよりよいだろう、すべてのエントリが有効でなければならない場合には、ショートもしでき、ブール値を返しますAllEntriesValidを言うと、無効なエントリがなど、ヒットされています

private bool AllEntriesValid() 
{ 
    if (name.Length < 8) 
    { 
     txt_name.Forecolor = Color.Red; 
     return false; 
    } 
    if (email.Contains('@')) 
    { 
     return false; 
    } 

    //if we get this far, no invalid entries were found, return true 
    return true; 
} 

これは、あなたが現在持っているただ一つ、複数のボタンのクリックからない呼び出すことができます - それははるかに読みやすいですし、あなたのコードが凝縮し続けます!

は、その後、あなたのボタンのコードでは、あなたは、単に呼び出します。

private void btn_submit_Click(object sender, EventArgs e) 
{ 
    if (AllEntriesValid()) 
    { 
     //do something now that everything is valid 
    } 
} 

// EDIT:プレスあまりにも早く提出します。

Dan

関連する問題