首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KeyPress F1不工作C#

KeyPress F1不工作C#
EN

Stack Overflow用户
提问于 2013-07-30 13:19:42
回答 4查看 25.1K关注 0票数 7

我在设计一个设备应用程序。紧凑型框架2.0

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

似乎找不到解决办法。

有可能吗?

我通常是这样使用Keypress的:

这样做是可行的:

代码语言:javascript
复制
        if (e.KeyChar == (char)Keys.M)
        {
            MessageBox.Show("M pressed");
            e.Handled = true;
        }

这种做法不起作用:

代码语言:javascript
复制
        if (e.KeyChar == (char)Keys.F1)
        {
            MessageBox.Show("F1 pressed");
            e.Handled = true;
        }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-07-30 13:22:35

尝尝这个

代码语言:javascript
复制
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");
    }
}
票数 7
EN

Stack Overflow用户

发布于 2013-07-30 13:25:27

参考This

您可以重写表单类的ProcessCmdKey方法,并使用keyData == Keys.F1检查是否按下F1。上面的链接有下面的例子。

代码语言:javascript
复制
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)
}
票数 7
EN

Stack Overflow用户

发布于 2013-07-30 13:36:28

有些键(如f1、f2、箭头键、选项卡.)不能被keychar“捕获”,因为您需要使用键代码:

代码语言:javascript
复制
if (e.KeyCode == Keys.F1)
{
  // do stuff
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17948204

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档