我在设计一个设备应用程序。紧凑型框架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;
}发布于 2013-07-30 13:22:35
尝尝这个
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");
}
}发布于 2013-07-30 13:25:27
参考This
您可以重写表单类的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)
}发布于 2013-07-30 13:36:28
有些键(如f1、f2、箭头键、选项卡.)不能被keychar“捕获”,因为您需要使用键代码:
if (e.KeyCode == Keys.F1)
{
// do stuff
}keychar属性- http://msdn.microsoft.com/en-us/library/system.windows.forms.keypresseventargs.keychar.aspx
https://stackoverflow.com/questions/17948204
复制相似问题