2014-05-20 60 views
0

我面臨着驗證約束的一個大問題 我有兩個輸入(txtLogin,txtPasswd)一個認證形式,我已經把約束條件,以適應數據庫方案。 我也有3個按鈕。C#ValidationConstraints形式

  • 一個用於登錄:btnConnect的
  • 一個用於創建帳戶:用於測試它btnCreateUser
  • 一個簡單MessageBox.show();

下面是代碼:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Text.RegularExpressions; 
using System.Threading; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace MoneyManager.View 
{ 
    public partial class LoginView : Form 
    { 
     public LoginView() 
     { 
      InitializeComponent(); 
     } 

     private void LoginView_Load(object sender, EventArgs e) 
     { 

     } 

     private void btnCreateUser_Click(object sender, EventArgs e) 
     { 
      new CreateUserView().Show(); 
     } 

     private void txtLogin_Validating(object sender, CancelEventArgs e) 
     { 
      string pattern = @"^.*\S$"; 
      Regex regex = new Regex(pattern); 

      if (!regex.IsMatch(txtLogin.Text.Trim())) 
      { 
       e.Cancel = true; 
       this.loginError.SetError(txtLogin, "Le login ne peut pas être vide"); 
      } 
      else 
      { 
       e.Cancel = false; 
       this.loginError.SetError(txtLogin, ""); 
      } 
     } 

     private void txtPasswd_Validating(object sender, CancelEventArgs e) 
     { 
      string pattern = @"^[^.*$]\S{6,}$"; 
      Regex regex = new Regex(pattern); 

      if (!regex.IsMatch(txtPasswd.Text.Trim())) 
      { 
       e.Cancel = true; 
       this.passwdError.SetError(txtPasswd, "Le mot de passe ne peut pas être vide et faire min 6 caractères"); 
      } 
      else 
      { 
       e.Cancel = false; 
       this.passwdError.SetError(txtPasswd, ""); 
      }    
     } 

     private void btnConnect_Click(object sender, EventArgs e) 
     { 
      if(ValidateChildren(ValidationConstraints.Enabled)) 
      { 
       MessageBox.Show("Votre login : " + txtLogin.Text + " Votre mot de passe : " + txtPasswd.Text); 
      } 
     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      MessageBox.Show("Hello"); 
     } 
    } 
} 

問題是,當我點擊「Button1的」,例如,它不允許我這樣做。點擊它之前我必須填寫輸入。

那麼,爲什麼它的發生

我試圖評論此部分:

if(ValidateChildren(ValidationConstraints.Enabled)) 
       { 
        MessageBox.Show("Votre login : " + txtLogin.Text + " Votre mot de passe : " + txtPasswd.Text); 
       } 

爲了消除「如果」,但它似乎是「如果」既有如果沒有效果它存在與否的行爲是相同的!

謝謝大家的響應。

+0

這是因爲你在'txtPasswd_Validating'代碼。如果你想點擊免費和任何地方,不要使用'control.validating'事件。單擊按鈕時「手動」驗證控件。 –

回答

0

的方法簽名是在你的代碼是正確的,所以我猜你沒有連接好GUI上的事件處理程序的按鈕 - 或你有他們的有線錯了。

按照箭頭:

screenshot