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);
}
爲了消除「如果」,但它似乎是「如果」既有如果沒有效果它存在與否的行爲是相同的!
謝謝大家的響應。
這是因爲你在'txtPasswd_Validating'代碼。如果你想點擊免費和任何地方,不要使用'control.validating'事件。單擊按鈕時「手動」驗證控件。 –