2012-11-30 141 views
1

我正在C#(Visual Studio)中更改密碼窗體窗體應用程序。這是我的應用程序將如何工作,在用戶輸入新密碼並通過文本框驗證後,將在新密碼文本框旁顯示一個勾號。檢查兩個文本框

我面臨的問題是如何檢查重新輸入的密碼是否與輸入的新密碼相同?在檢查它們是否相同之後,將顯示勾號以向用戶顯示它被檢查並且相同。我不想點擊任何按鈕來檢查兩個文本框,而是檢查用戶是否停止輸入。我怎樣才能做到這一點?

+1

爲什麼不檢查文本框的TextChanging事件,但是這將檢查控件何時失去焦點,而不是在用戶輸入時。你會如何確定用戶是否已經停止輸入? – Habib

+0

文本更改事件?對不起,但我對此感到高興,是我能看到的任何例子嗎?它是如何工作的? – Derek

+0

我會使用KeyPress或KeyUp的KeyDown之類的關鍵事件。你可以在角色改變時直接執行你的比較 –

回答

4

創建一個新的Windows窗體項目。把兩個文本框放在窗體上,僅此而已。使用它們的默認名稱textBox1textBox2將以下代碼放置在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;

+0

在上面給出的示例中,檢查兩個文本框中的文本是否不相等會更有效,因爲比較不必比較所有字符,而是在字符不匹配時停止。雖然這只是一個非常小的性能增加,但它關於思考的方式;) –

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; 
    } 
} 
+0

可以告訴我它是如何工作的嗎?我在網上調查,但我似乎無法理解.. – Derek

+0

對不起,昨晚太晚了..所以我剛剛去睡覺..我修改了我的答案,並提供了一個示例代碼。 – bhuang3

0

我想你應該驗證在重新進入LostFocus文本密碼TextBox。在這裏您可以檢查兩個字段中的文本是否匹配並顯示相應的消息。當用戶完成零件時,這也只會觸發一次。

+0

有沒有一個例子表明LostFocus如何用於我的代碼? – Derek

0

試試這個:

兩個文本框 添加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; 
     }