KeyPress F1不起作用C#

我正在设计一个设备应用程序。 Compact Framework 2.0

我希望用户按F1导航到下一个屏幕,但它不起作用。

似乎无法找到解决方案。

可能吗?

这就是我通常使用Keypress的方式:

这有效:

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

这不起作用:

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

试试这个

 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"); } } 

请参阅此

您可以覆盖表单类的ProcessCmdKey方法,并使用keyData == Keys.F1来检查F1是否被按下。 以上链接的示例如下。

 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) } 

keychar无法“捕获”某些键(如f1,f2,箭头键,标签….),因为您需要使用键码:

 if (e.KeyCode == Keys.F1) { // do stuff } 

keychar属性 – http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.keychar.aspx

使用KeyDown而不是KeyPress

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

KeyPreview设置为true