2016-04-13 17 views
0

Düzenli bir ifademde C# winforms var. Formatın doğru olup olmadığını tanımlamam gerekiyor. Doğruysa, kaydetme işlemine devam edilir, ancak doğruysa, doğrulama işlemini gösterecek ve kaydetme etkinliğini iptal edecektir. kodunuEğer yanlış olursa olayı iptal etmek için düzenli ifade

private void emailTxt_Validating(object sender, CancelEventArgs e) 
{ 
    string pattern = "^([0-9a-zA-Z]([-\\.\\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\\w]*[0-9a-zA-Z]\\.)+[a-zA-Z]{2,9})$"; 

    if (Regex.IsMatch(emailTxt.Text, pattern)) 
    { 
     e.Cancel = false; 
    } 
    else 
    { 
     e.Cancel = true; 
     errorEmail.SetError(emailTxt, "Incorrect Format Try... [email protected]"); 
     CancelBtn.Enabled = true;    
    } 
} 

kaydet kodu doğrulama

private void SaveBtn_Click(object sender, EventArgs e) 
     { 
      //SQL Connection and SQL for inserting a new admin 
      SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0; AttachDbFilename=C:\Users\Donald\Documents\Visual Studio 2013\Projects\DesktopApplication\DesktopApplication\Student_CB.mdf ;Integrated Security=True"); 
      con.Open(); 

      if (ValidateChildren(ValidationConstraints.Enabled)) 
      { 
       try 
       { 
        string sql = "INSERT INTO Admin (Admin_Username, Admin_FName, Admin_SName, Admin_Email, Admin_Password) " + "VALUES (@adminName, @adminFirstname, @adminSurname, @adminEmail, @adminPassword);"; 

        using (var cmd = new SqlCommand(sql, con)) 
        { 
         cmd.Parameters.AddWithValue("@adminName", usernameTxt.Text); 
         cmd.Parameters.AddWithValue("@adminFirstname", firstnameTxt.Text); 
         cmd.Parameters.AddWithValue("@adminSurname", surnameTxt.Text); 
         cmd.Parameters.AddWithValue("@adminEmail", emailTxt.Text); 
         cmd.Parameters.AddWithValue("@adminPassword", passwordTxt.Text); 
         cmd.ExecuteNonQuery(); 
        } 

        MessageBox.Show("Admin Successfully Added!"); 

        this.Close(); 

       } 

       catch (Exception ex) 
       { 

        MessageBox.Show(ex.Message); 


       } 
      } 

      con.Close(); 
     } 

O yanlış bir biçim belirten ancak biçimlendirme yanlış olduğunda bile etkinliği kaydetmek devam ediyor .

+0

Hata başka bir yerde ve biz bunu göremiyoruz. Whete tasarruf kodu mu? –

+0

@GiorgiNakeuri Yukarıdaki kodu, kayıt kodumla güncelledim. –

+0

"validateChildren" yöntemini – Valentin

cevap

0

İçinde boş olup olmadığını doğrulayan işlevde yer alarak çalışmasını sağladım. Bu işe yarıyor.

private void emailTxt_Validating(object sender, CancelEventArgs e) 
    { 

    if (string.IsNullOrWhiteSpace(emailTxt.Text)) 
    { 
     e.Cancel = true; 
     errorEmail.SetError(emailTxt, "Email is Empty!"); 
     CancelBtn.Enabled = true; 
    } 
    else 
    { 
     string email = emailTxt.Text; 
     Regex regex = new Regex(@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"); 
     Match match = regex.Match(email); 

     if (match.Success) 
     { 
      e.Cancel = false; 
     } 
     else 
     { 
      e.Cancel = true; 
      errorEmail.SetError(emailTxt, "Incorrect Format Try... [email protected]"); 
      CancelBtn.Enabled = true; 
      return; 
     }         
    } 
}