首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制时C#热键

控制时C#热键
EN

Stack Overflow用户
提问于 2014-03-21 17:46:27
回答 4查看 168关注 0票数 0

我正在尝试向我的窗口应用程序添加一些热键,这样如果我按下Ctrl+Q,它就会执行一个操作。我真搞不懂。我查看了堆栈溢出和MSDN,但找不到我需要的答案。所以这就是我现在拥有的

xaml:

代码语言:javascript
复制
<Grid KeyDown="Grid_KeyDown" KeyUp="Grid_KeyUp">
    <Menu Height="20" VerticalAlignment="Top" >
        <MenuItem Name="MenuItemFile"  Header="File" >
            <MenuItem Name="CloseApp" Header="Close" Icon="" Click="CloseApp_Click" AutomationProperties.AcceleratorKey="Control L" InputGestureText="Ctrl+X"/>
        </MenuItem>

c#

代码语言:javascript
复制
private void Grid_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.LeftCtrl)
        {
            switch (e.Key)
            {
               case Key.L:
                  This.Close();
                  break;
            }
        }
    }
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-21 18:17:23

可以将键绑定到XAML中的命令:

代码语言:javascript
复制
<Window.InputBindings>
    <KeyBinding Key="Q" Modifiers="Control" Command="ApplicationCommands.Close"/>
</Window.InputBindings>

<Window.CommandBindings>
    <CommandBinding Command="ApplicationCommands.Close" Executed="CloseCommandHandler"/>
</Window.CommandBindings>

然后在代码隐藏中定义命令应该做什么:

代码语言:javascript
复制
private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    this.Close();
}

或者将其映射到ViewModel中的命令,如果您使用的是MVVM模式。

票数 1
EN

Stack Overflow用户

发布于 2014-03-21 17:52:03

你只需通过

代码语言:javascript
复制
private void Grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Q && e.Modifiers == Keys.Control)
    {
        // do stuff
    }
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-21 17:56:59

这是在一个不同的方向,但WPF的命令,可以帮助您以及这一点。您可以定义RoutedCommandRoutedUICommand,并将EventHandlers附加到CanExecuteExecuted事件中。命令还可以将KeyBindings与修改键(如CtrlShift )结合使用。当您想要构造更大的应用程序时,这一点尤其有用。

下面是关于如何:创建RoutedCommand关于命令的概述的一些详细信息

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

https://stackoverflow.com/questions/22565923

复制
相关文章

相似问题

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