2013-07-30 47 views
5

Tôi đang thiết kế một ứng dụng thiết bị. Compact Framework 2.0KeyPress F1 không hoạt động C#

Tôi muốn người dùng nhấn F1 để điều hướng đến màn hình tiếp theo, nhưng nó không hoạt động.

Dường như không tìm được giải pháp.

Có thể không?

Đây là cách tôi thường sử dụng khi nhấn phím:

này hoạt động:

 if (e.KeyChar == (char)Keys.M) 
     { 
      MessageBox.Show("M pressed"); 
      e.Handled = true; 
     } 

này DOS không làm việc:

 if (e.KeyChar == (char)Keys.F1) 
     { 
      MessageBox.Show("F1 pressed"); 
      e.Handled = true; 
     } 
+4

"Trùng lặp": http://stackoverflow.com/questions/5951496/how-do-i-capture-keys-f1-regardless-of-the-focused-control-on-a-form –

+0

Bạn có muốn để đạt được điều này trong C# hoặc javascript? –

+0

Làm cách nào để gỡ lỗi? – Reniuz

Trả lời

4

thử này

private void Form1_Load(object sender, EventArgs e) 
{ 
    this.KeyPreview = true; 
    this.KeyDown += new KeyEventHandler(Form1_KeyDown); 
} 

void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode.ToString() == "F1") 
    { 
     MessageBox.Show("F1 pressed"); 
    } 
} 
+0

Cảm ơn, Ramesh –

+0

Chúc mừng mã hóa !!! –

+2

Trong khi điều này thực sự làm việc, tôi thực sự nghĩ rằng bạn nên xem xét bất kỳ câu trả lời khác - Sử dụng các giá trị Enum, thay vì so sánh chuỗi. –

0

Sử dụng KeyDown thay o f KeyPress:

private void Form1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyData == Keys.F1) 
    { 
     // your code here 
    } 
} 

Ngoài ra thiết lập KeyPreview để true

7

Hãy tham khảo This

Bạn có thể ghi đè lên các phương pháp ProcessCmdKey của lớp hình thức của bạn và sử dụng keyData == Keys.F1 để kiểm tra xem F1 được nhấn. Liên kết trên có ví dụ như sau.

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.F1) 
    { 
     MessageBox.Show("You pressed the F1 key"); 
     return true; // indicate that you handled this keystroke 
    } 

    // Call the base class 
    return base.ProcessCmdKey(ref msg, keyData) 
} 
Các vấn đề liên quan