Для достижения требуемой функциональности вам просто нужно отслеживать последовательность KeyPress
событий.
Вы можете создать класс для отслеживания последней комбинации клавиш, которая была нажата в ProcessCmdKey
. Если эта конкретная комбинация не соответствует сопоставленной команде, но является первым элементом последовательности, вы можете сохранить ее в своем классе. Затем в следующий раз при активации ProcessCmdKey
проверьте ваш новый класс KeyPressTracker
, чтобы определить, была ли запущена последовательность. Если это так, проверьте, является ли вновь нажатая комбинация клавиш вторым элементом, который вы указали. Пожалуйста, смотрите пример псевдокода ниже:
Шаг 1: ProcessCmdKey
активирован. Комбинация клавиш: Ctrl + R , это не соответствует команде, которую вы хотите обработать, но это первый элемент последовательности, который вы хотите использовать ( Ctrl + R + M ).
Шаг 2: Сохраните это нажатие клавиши в новом классе, который вы создали, чтобы отследить последнее нажатие клавиши.
KeyPressTracker.Store(KeyCode, Modifiers);
Шаг 3: ProcessCmdKey
активируется второй раз. На этот раз комбинация клавиш Ctrl + M - это не нажатие клавиши, которое мы ищем, а второй элемент последовательности. Мы проверяем последнее сохраненное нажатие клавиши, используя новый класс KeyPressTracker
. Это позволит вам сопоставить «последовательность», такую как Ctrl + R и Ctrl + M .
var lastKeyPress = KeyPressTracker.GetLastKeyPress();
if (lastKeyPress == "Ctrl+R" && currentKeyPress == "Ctrl+M")
{
// Show Refactor dialog
}