首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在keydown事件中传递False键值

在keydown事件中传递False键值
EN

Stack Overflow用户
提问于 2011-04-23 11:04:55
回答 2查看 612关注 0票数 0

我有一个MDI父窗体。当用户按Enter时,我希望应用程序关闭。

我检查keydown事件,如下所示:

代码语言:javascript
运行
复制
 private void MainForm_KeyDown(object sender, KeyEventArgs e)
 {

     if (e.KeyValue == (int)Keys.Enter) 
     {
                    Application.Exit();
     }
 }

现在,当我在窗体上没有任何可点击的控件(按钮、TextBox等)时,它可以很好地工作。e.KeyValue(int)值为Enter键(13)。但是如果我将一些按钮或文本框放到MDI表单上,e.KeyValue会带来Alt键的键值,即18。为什么呢?

所以现在如果我按下Alt+Enter,表单就会关闭;但不仅仅是按Enter键

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-23 11:35:01

您需要更快地处理KeyPress。以下代码将为您工作:

代码语言:javascript
运行
复制
    protected override bool ProcessKeyPreview(ref System.Windows.Forms.Message m)
    {
        int _ENTER = 13;
        int _KEYUP = 257;
        if (m.Msg == _ENTER && (int)m.WParam == _KEYUP)
        {
            Application.Exit();
        }
        return base.ProcessKeyPreview(ref m);
    }
票数 2
EN

Stack Overflow用户

发布于 2011-04-23 11:13:08

使用e.KeyCode and e.Modifiers;

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

https://stackoverflow.com/questions/5761877

复制
相关文章

相似问题

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