【发布时间】:2021-05-30 02:49:03
【问题描述】:
我为一家书店创建了 Windows 窗体应用程序。它有登录表单,如果用户忘记了密码,他可以通过单击忘记密码按钮来更改密码。在“重置密码”表格中,我给出了正则表达式来验证用户名、新密码、确认密码文本框。而且如果用户不想重置他的密码,它有一个关闭按钮来关闭“重置密码”表格。 然后我的问题是,当用户单击关闭按钮时,它无法关闭表单并显示我为文本框的正则表达式创建的错误消息。如何编码以防止此错误消息来自正则表达式并通过单击关闭按钮随时关闭该表单?
这是该表单中的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using MySql.Data.MySqlClient;
using System.Text.RegularExpressions;
using BookShopApp.Connection;
namespace BookShopApp.forms
{
public partial class Form_forgetPwd : Form
[enter image description here][1]{
MySqlConnection conn = null;
string userName;
string password;
string confirm_Password;
public Form_forgetPwd()
{
InitializeComponent();
ConnectDB cndb = new ConnectDB();
conn = cndb.ConnectDatabase();
}
private void btnclose_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnSave_Click(object sender, EventArgs e)
{
userName = txtUsername.Text;
password = txtPwd.Text;
confirm_Password = txtConPwd.Text;
try
{
conn.Open();
string cnestring = "SELECT User_Name FROM wisdom.user_detail WHERE User_Name='" + userName + "'";
string UP = " UPDATE wisdom.user_detail SET Password = '"+password+"' WHERE User_Name = '"+userName+"'";
MySqlCommand cmd = new MySqlCommand(cnestring,conn);
MySqlCommand cmdU = new MySqlCommand(UP, conn);
cmdU.ExecuteNonQuery();
MySqlDataReader red = cmd.ExecuteReader();
if (red.Read())
{
Login log = new Login();
log.Hide();
this.Hide();
MessageBox.Show("Password Successfully Changed !","Success",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Invalid Login please check username and password");
}
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void btnClear_Click(object sender, EventArgs e)
{
txtUsername.Clear();
txtPwd.Clear();
txtConPwd.Clear();
}
private void txtUsername_Leave(object sender, EventArgs e)
{
userName = txtUsername.Text;
try
{
conn.Open();
string cnestring = "SELECT User_Name FROM wisdom.user_detail WHERE User_Name='" + userName + "'";
MySqlCommand cmd = new MySqlCommand(cnestring, conn);
MySqlDataReader red = cmd.ExecuteReader();
if (red.Read())
{
//MessageBox.Show(" success");
}
else
{
MessageBox.Show("Invalid username","Erorr",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
conn.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void txtPwd_TextChanged(object sender, EventArgs e)
{
lblPwdInfo.Hide();
}
private void txtPwd_Enter(object sender, EventArgs e)
{
lblPwdInfo.Show();
}
private void txtPwd_Leave(object sender, EventArgs e)
{
password = txtPwd.Text;
try
{
string regExpPwd = "^([a-zA-Z0-9]{8,15})$";
Regex PwdRE = new Regex(regExpPwd);
if (PwdRE.IsMatch(password))
{
password = password;
//MessageBox.Show(password);
}
else
{
MessageBox.Show("Please Follow Password Hint & Try Again !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
txtPwd.Focus();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void txtConPwd_Leave(object sender, EventArgs e)
{
if(txtPwd.Text == txtConPwd.Text)
{
btnSave.Focus();
}
else
{
MessageBox.Show("Password & Confirm Password is not Matched !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
【问题讨论】:
-
您应该对文本框验证方法进行正则表达式检查,而不是在离开方法时检查
-
@Tharaka Amarasinghe,有更新吗?如果您的问题已经解决,您可以点击“✔”将相应的回复标记为答案。
标签: c# regex windows forms visual-studio