Tạo trình xử lý sự kiện cho keyboard

Mình có tạo 1 trình xử lý sự kiện chung cho 10 button là các số từ 0->9 lấy các ký tự đưa vào textbox. Sau đó mình muốn tạo thêm các hoặc 1 trình xử lý sự kiện cho việc nhập từ bàn phím thay vì các button nhưng khi dùng keyboard thì cũng tương ứng với button đó

    private void button_Click(object sender, EventArgs e)
            {
                Button a = (Button)(sender);
                if(textBox1.Text.Length<4)
                {
                    textBox1.Text += a.Text;
                }    
            }
    private void button_KeyNum0(object a, KeyEventArgs e)
            {
                
                if(e.KeyCode == Keys.NumPad0)
                {
                    button10.PerformClick();
                    e.SuppressKeyPress = true;
                    e.Handled = true;
                }    
            }

Nhưng khi nhập thì textbox chỉ nhận các ký tự thông qua việc nhập vào textbox chứ không phải từ tham chiếu đến button tương ứng. Không biết code mình có sai không. Mình có tạo được cho phím enter rồi làm tương tự cho các phím số nhưng không được…

Phím ảo bạn tự tạo thì đã hoạt động tốt theo ý của bạn rồi. Nhưng bạn muốn bắt sự kiện nhấn phím thật (hoặc phím ảo của Windows) thì các phím ảo tương ứng của bạn sẽ được nhấn. Mà bạn muốn nó nhận bất kì nơi nào (không chỉ ở TextBox).

Bạn bắt sự kiện nhấn phím cho cả Form hoặc Control lớn bao cả nhóm mà bạn muốn nhận sự kiện.
Mặc định sự kiện nhấn phím bị bỏ qua ở cấp độ Form và 1 số Control chung. Gán thuộc tính KeyPreview = true để bắt được sự kiện này.

Bạn chỉ cần bắt chung luôn, không cần bắt cho từng Control nhỏ lẻ nữa.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?