我正在C#(Visual Studio)中更改密碼窗體窗體應用程序。這是我的應用程序將如何工作,在用戶輸入新密碼並通過文本框驗證後,將在新密碼文本框旁顯示一個勾號。檢查兩個文本框
我面臨的問題是如何檢查重新輸入的密碼是否與輸入的新密碼相同?在檢查它們是否相同之後,將顯示勾號以向用戶顯示它被檢查並且相同。我不想點擊任何按鈕來檢查兩個文本框,而是檢查用戶是否停止輸入。我怎樣才能做到這一點?
我正在C#(Visual Studio)中更改密碼窗體窗體應用程序。這是我的應用程序將如何工作,在用戶輸入新密碼並通過文本框驗證後,將在新密碼文本框旁顯示一個勾號。檢查兩個文本框
我面臨的問題是如何檢查重新輸入的密碼是否與輸入的新密碼相同?在檢查它們是否相同之後,將顯示勾號以向用戶顯示它被檢查並且相同。我不想點擊任何按鈕來檢查兩個文本框,而是檢查用戶是否停止輸入。我怎樣才能做到這一點?
創建一個新的Windows窗體項目。把兩個文本框放在窗體上,僅此而已。使用它們的默認名稱textBox1
和textBox2
將以下代碼放置在Form1.cs
(因爲這是文件的默認名稱)。現在,當用戶按下一個鍵時,就會進行比較。如果文本相同,則文本框的背景顏色變爲綠色,否則變爲紅色。我沒有使用設計器來連接KeyUp事件
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;
}
}
}
注意,我沒有說,在Form1的構造函數:textBox1.KeyUp += textBox_Compare;
在上面給出的示例中,檢查兩個文本框中的文本是否不相等會更有效,因爲比較不必比較所有字符,而是在字符不匹配時停止。雖然這只是一個非常小的性能增加,但它關於思考的方式;) –
我認爲你可以使用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;
}
}
我想你應該驗證在重新進入LostFocus
文本密碼TextBox
。在這裏您可以檢查兩個字段中的文本是否匹配並顯示相應的消息。當用戶完成零件時,這也只會觸發一次。
有沒有一個例子表明LostFocus如何用於我的代碼? – Derek
試試這個:
兩個文本框 添加TextChanged事件要做到這一點,到文本框的屬性,單擊「雷雨」圖標,滾動到「文本改變」雙擊,然後一旦文本框的文字改變,事件將被觸發。
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;
}
爲什麼不檢查文本框的TextChanging事件,但是這將檢查控件何時失去焦點,而不是在用戶輸入時。你會如何確定用戶是否已經停止輸入? – Habib
文本更改事件?對不起,但我對此感到高興,是我能看到的任何例子嗎?它是如何工作的? – Derek
我會使用KeyPress或KeyUp的KeyDown之類的關鍵事件。你可以在角色改變時直接執行你的比較 –