Захват Ctrl-X с событием KeyDown текстового поля в WPF - PullRequest
9 голосов
/ 10 ноября 2011

Я пытаюсь вызвать событие, когда пользователь нажимает ctrl - x , используя событие KeyDown. Это прекрасно работает для ctrl - D , но событие не запускается при нажатии ctrl - x . Я предполагаю, что это потому, что ctrl - x является командой "вырезать". Есть ли способ вызвать событие при нажатии ctrl - X ?

private void textBox_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl))
    {
        switch (e.Key)
        {
            case Key.D:
                //handle D key
                break;
            case Key.X:
                //handle X key
                break;
        }
    }
}

Ответы [ 4 ]

15 голосов
/ 15 ноября 2013

Чтобы сделать это в wpf, я пытаюсь это:

private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
    if (e.Key == Key.X && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
    {
        MessageBox.Show("You press Ctrl+X :)");
    }
}
8 голосов
/ 10 ноября 2011

Вы можете переопределить существующую команду вырезания:

<TextBox>
    <TextBox.InputBindings>
        <KeyBinding Key="X" Modifiers="Control" Command="{Binding TestCommand}" />
    </TextBox.InputBindings>
</TextBox>

Вам нужно создать команду , хотя.

0 голосов
/ 06 марта 2019

Я использую этот метод:

private void SomeWindow_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.X && (e.KeyboardDevice.Modifiers & ModifierKeys.Control) != 0)
    {
        //Ctrl + X is pressed
    }
}
0 голосов
/ 10 ноября 2011

попробуйте следовать в событии keydown

       if (e.Control == true && e.KeyCode==keys.x)
       {
            e.Handled = true;
            textBox1.SelectionLength = 0;
            //Call your method
       }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...