首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在WPF中检测修改键状态?

如何在WPF中检测修改键状态?
EN

Stack Overflow用户
提问于 2011-04-22 07:05:16
回答 6查看 92.2K关注 0票数 165

当我需要访问Control,Shift,Alt按钮是否按下时,是否有一些全局构造可以使用?例如在TreeViewMouseDown事件内。

如果是这样的话,是怎么做的?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-04-22 07:10:54

使用类Keyboard。使用Keyboard.IsKeyDown,你可以检查是否按下了Control,Shift,Alt键。

对于Shift:

代码语言:javascript
复制
if (Keyboard.IsKeyDown(Key.LeftShift) || Keyboard.IsKeyDown(Key.RightShift))
{ /* Your code */ }

对于控件:

代码语言:javascript
复制
if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
{ /* Your code */ }

对于Alt:

代码语言:javascript
复制
if (Keyboard.IsKeyDown(Key.LeftAlt) || Keyboard.IsKeyDown(Key.RightAlt))
{ /* Your code */ }
票数 277
EN

Stack Overflow用户

发布于 2011-04-22 07:23:16

还有:

代码语言:javascript
复制
// Have to get this value before opening a dialog, or user will have released the control key
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{

}
票数 130
EN

Stack Overflow用户

发布于 2014-09-19 00:06:44

代码语言:javascript
复制
    private bool IsShiftKey { get; set; }

    private void OnPreviewKeyDown(object sender, KeyEventArgs e)
    {
        IsShiftKey = Keyboard.Modifiers == ModifierKeys.Shift ? true : false;

        if ((Key.Oem3 == e.Key || ((IsShiftKey && Key.Oem4 == e.Key) || (IsShiftKey && Key.Oem6 == e.Key) || (IsShiftKey && Key.Oem5 == e.Key)) && (validatorDefn as FormatValidatorDefinition).format == "packedascii"))
        {
           e.Handled = true;
        }
    }
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5750722

复制
相关文章

相似问题

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