2013-08-07 2 views
1

У меня есть экран входа в систему, и я хочу активировать его, когда я нажимаю клавишу ввода в текстовом поле пароля. проблема заключается в том, что даже при том, что она работает, когда я закрываю форму, приложение действует, как и нажатие кнопки, и форма открывается в бесконечном цикле.Включить экран при входе в C#

вот мой код:

private void textBox2_TextChanged(object sender, EventArgs e) 
     { 
      textBox2.KeyDown += new KeyEventHandler(textBox2_KeyDown); 

     } 

public void textBox2_KeyDown(object sender, KeyEventArgs e) 
     { 
      if (user == Username[1] && pass == passwords[1]) 
       { 
        MessageBox.Show("Login successfull", "Welcome, HR"); 
        UpdateDBForm newEmployee = new UpdateDBForm(); 
        this.Hide(); 
        newEmployee.ShowDialog(); 
        return; 

       } 
} 

Как TDO я решить эту проблему? Спасибо.

+0

'+ = 'обычно означает добавление ... поэтому, когда текст меняет другой' KeyEventHandler' добавляется 'KeyDown', который не совсем то, что вы хотите. Зарегистрируйтесь, что при запуске –

ответ

1

Вы назначая KeyDown -EventHandler каждый раз текстовые изменения:

private void textBox2_TextChanged(object sender, EventArgs e) 
{ 
    textBox2.KeyDown += new KeyEventHandler(textBox2_KeyDown); // EVIL! 
} 

Это означает, что чаще вы вводите данные в вашем текстовом поле, тем больше EventHandler будет назначен и когда вы в конце концов, нажмите клавишу ВВОД он будет называться столько раз. Назначьте обработчик событий один раз, т. Е. В вашем конструкторе, и это должно работать.

+1

Можете ли вы дать мне пример кода excat? – user2023203

+1

Не сейчас, но рассматривайте это как отправную точку. –

+0

Спасибо, что сработало отлично! – user2023203

1

Как @ bash.d написал вам событие несколько раз назначая, сделайте это один раз (либо дизайнером или конструктором (после InitializeComponent вызова) или в случае)

private void Form_Load(object sender, EventArgs e) 
{ 
    textBox2.KeyDown += new KeyEventHandler(textBox2_KeyDown); 
} 

также вы написали, что вы хотите войти в систему после того, как пользователь нажмите кнопку входа, так что вы должны добавить этот if:

public void textBox2_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     if (user == Username[1] && pass == passwords[1]) 
     { 
      MessageBox.Show("Login successfull", "Welcome, HR"); 
      UpdateDBForm newEmployee = new UpdateDBForm(); 
      this.Hide(); 
      newEmployee.ShowDialog(); 
      return;   
     } 
    } 
}