簡體   English   中英

按住Control時的C#熱鍵

[英]C# Hotkeys while holding Control

我正在嘗試向Windows應用程序中添加一些熱鍵,以便如果我按Ctrl + Q它將執行一個操作。 我不太明白這一點。 我查看了堆棧溢出和MSDN,但找不到所需的答案。 這就是我目前擁有的

xaml:

<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#

private void Grid_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.LeftCtrl)
        {
            switch (e.Key)
            {
               case Key.L:
                  This.Close();
                  break;
            }
        }
    }

您可以簡單地通過

private void Grid_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Q && e.Modifiers == Keys.Control)
    {
        // do stuff
    }
}

現在這是一個不同的方向,但是WPF的命令也可以幫助您。 您可以定義RoutedCommandRoutedUICommand並將EventHandlers附加到CanExecuteExecuted事件。 命令還可以具有KeyBindings以及CtrlShift類的修改鍵。 當您要構建更大的應用程序時,這特別有用。

以下是有關如何:創建RoutedCommand的一些詳細信息以及有關命令概述

您可以將密鑰綁定到XAML中的命令:

<Window.InputBindings>
    <KeyBinding Key="Q" Modifiers="Control" Command="ApplicationCommands.Close"/>
</Window.InputBindings>

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

然后在后面的代碼中定義命令應執行的操作:

private void CloseCommandHandler(object sender, ExecutedRoutedEventArgs e)
{
    this.Close();
}

如果使用的是MVVM模式,也可以將其映射到ViewModel中的命令。

可以使用ALT代替CTRL嗎? 是的,請嘗試一下-它內置於:

WPF中的助記鍵

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM