Mình thường xuyên xử lý sự kiện nhấn phím Enter, nhưng không biết cách xóa vùng điệm (buffer) của nó như thế nào vì chỉ nhấn 1 lần là nó thực hiện luôn các lần sau nếu gặp đúng điều kiện KeyCode==Keys.Enter . Bác nào bít xin chỉ giùm. Thank's!
Mình thường xuyên xử lý sự kiện nhấn phím Enter, nhưng không biết cách xóa vùng điệm (buffer) của nó như thế nào vì chỉ nhấn 1 lần là nó thực hiện luôn các lần sau nếu gặp đúng điều kiện KeyCode==Keys.Enter . Bác nào bít xin chỉ giùm. Thank's!
code của u thế nào chứ ? thử e.Cancel = true xem sao.
e : KeyPressEventArgs/KeyDownEventArgs
Minh đã thử rùi, e.Cancel của bạn không có trong Event KeyPressEventArgs/KeyDownEventArgs , code của mình như vầy nè:
private void frmxuatkhoa_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if(e.KeyCode == Keys.Enter)
SendKeys.Send("{TAB}");
}
Khi mình show form khác lên thì sự kiện KeyUp trên form mới tự động thực hiện không nói lời nào.
if(e.KeyCode == Keys.Enter)
this.Close();
useinsteadCode:e.Handled = true;
Có thể thêm một cái biến vào xử lý.
Ex:
public bool ok = true;
private void frmxuatkhoa_KeyUp(object sender, System.Windows.Forms.KeyEventArgs e)
{
if((e.KeyCode == Keys.Enter)&&(ok))
SendKeys.Send("{TAB}");
ok = flase;
}
Thế này nó chỉ thực hiện 1 lần, sau đó khi close form vừa mở, gán ok = true là được.
Trên form của tui có nhiều TextBox, tui dùng phím Enter thay cho phím Tab, khi đến TextBox nào đó thì mới Show cái form thứ 2 lên, trên form thứ 2 lại có sự kiện KeyUp với phím Enter thì Close form đó. Cách dùng của anh tuandm thì chỉ thực hiện được 1 lần nên không thể nhấn Enter lần thứ hai (nếu được thì cũng rất rờm rà và dài dòng), còn cái e.Handled = true của anh danceswithwolves thì chẳng ăn thua gì, bác nào có cách hay hơn xin chỉ giùm.!
Bookmarks