2012-11-30 8 views
1

Я работаю над приложением формы окна паролей изменений в C# (визуальная студия). Так мое приложение будет работать после того, как пользователь введет свой новый пароль и пропустит проверку текстового поля. Рядом с полем будет отображаться галочка.Проверка между двумя текстовыми полями

Проблема, с которой я столкнулся, - как я могу проверить, что перепечатанный пароль совпадает с введенным новым паролем? После проверки того, что они одинаковы, появится галочка, показывающая пользователю, что она проверена, и то же самое. Я не хочу нажимать любую кнопку, чтобы проверить как текстовое поле, так и проверку, как только пользователь перестанет печатать. Как я могу это сделать?

+1

Почему вы не проверяете это событие TextChanging текстового поля, но это будет проверять, когда элемент управления потеряет фокус, а не во время ввода пользователем. Как бы вы определили, прекратил ли пользователь печатать? – Habib

+0

Изменение текста? Извините, но я новичок в этом, это то, что можно увидеть из каких-либо примеров? Как это работает? – Derek

+0

Я бы использовал одно из ключевых событий, таких как KeyDown KeyPress или KeyUp. Вы можете выполнить сравнение непосредственно при изменении символа –

ответ

4

Создайте новый проект Windows Forms. Поместите два текстовых поля в форму, не более того. Используйте свои имена по умолчанию: 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;

+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; 
     } 
Смежные вопросы