1

我正在使用 C#(Visual Studio)中的更改密码窗口窗体应用程序。这就是我的应用程序的工作方式,在用户输入新密码并通过文本框验证后,新密码文本框旁边将显示一个勾号。

我面临的问题是如何检查重新输入的密码是否与正在输入的新密码相同?在检查它们是否相同后,将出现勾号以向用户显示它已被选中并且相同。我不想单击任何按钮来检查两个文本框,而是在用户停止输入后检查。我怎样才能做到这一点?

4

4 回答 4

4

创建一个新的 Windows 窗体项目。在表单上放两个文本框,仅此而已。使用它们的默认名称textBox1并将textBox2下面的代码放入Form1.cs(因为这是文件的默认名称)。现在,当用户按下一个键时,就会进行比较。如果文本相同,则文本框的背景颜色变为绿色,否则变为红色。

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;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            textBox1.KeyUp += textBox_Compare;
            textBox2.KeyUp += textBox_Compare;
        }

        private void textBox_Compare(object sender, KeyEventArgs e)
        {
            Color cBackColor = Color.Red;
            if (textBox1.Text == textBox2.Text)
            {
                cBackColor = Color.Green;
            }
            textBox1.BackColor = cBackColor;
            textBox2.BackColor = cBackColor;
        }
    }
}

请注意,我没有使用设计器附加 KeyUp 事件,而是在 Form1 的构造函数中完成的:textBox1.KeyUp += textBox_Compare;

于 2012-11-30T06:33:06.377 回答
0

我认为您应该验证LostFocus重新输入密码中的文本TextBox。在这里,您可以检查两个字段中的文本是否匹配并显示适当的消息。此外,这只会在用户完成该部分时触发一次。

于 2012-11-30T06:36:16.880 回答
0

尝试这个:

在两个文本框上添加一个 textchanged 事件为此,请转到文本框的属性,单击“Thunderstorm”图标,滚动到“文本更改”双击,然后一旦文本框的文本发生更改,就会触发该事件。

 private void Form1_Load(object sender, EventArgs e)
        {
             //label1 = your tick
            label1.Visible = false;
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            //if same, show, if different, hide
            if (string.Compare(textBox1.Text, textBox2.Text, true) == 0)
                label1.Visible = true;
            else
                label1.Visible = false;
        }

        private void textBox2_TextChanged(object sender, EventArgs e)
        {
             //if same, show, if different, hide
            if (string.Compare(textBox1.Text, textBox2.Text, true) == 0)
                label1.Visible = true;
            else
                label1.Visible = false;
        }
于 2012-11-30T12:33:33.803 回答
0

我认为您可以使用TextChanged侦听器功能。或keyDown事件。

示例代码:

private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;

this.textBox1.TextChanged += new System.EventHandler(passwordChanged);
this.textBox2.TextChanged += new System.EventHandler(passwordChanged);

private void passwordChanged(object sender, EventArgs e)
{
    String newPassword1 = textBox1.Text;
    String newPassword2 = textBox2.Text;
    if (!newPassword1.Equals(newPassword2))
    {
        textBox1.BackColor = Color.Red;
        textBox2.BackColor = Color.Red;
    }
    else
    {
        textBox1.BackColor = Color.White;
        textBox2.BackColor = Color.White;
    }
}
于 2012-11-30T06:24:07.153 回答