Как отловить зажатие клавиши Alt в событии MouseDown

169
06 марта 2021, 14:10

Имеется DataGrid (WinForms), в нем выводится список сущностей. При выборе сущности, в событии

viewPoints_FocusedRowObjectChanged(object sender, FocusedRowObjectChangedEventArgs e)

поджигаются другие события, производящие некие действия. Необходимо блокировать поджиг этих других событий при условии, что сущность была не просто выбрана, а щелкнута с зажатой клавишей Alt (это означает начало перетаскивания, DragAndDrop).

Событие MouseDown срабатывает раньше события выбора сущности, но имеет параметр MouseEventArgs e, в котором я не нашел ничего, что позволило бы проанализировать зажатую при щелчке клавишу Alt.

Событие DragEnter имеет параметр DragEventArgs e, в котором есть e.KeyState (битовая маска, в том числе и про Alt), но это событие срабатывает позже события выбора строки Grid-а, когда нежелательные по Alt'у действия уже произведены.

Радикальным образом менять архитектуру проекта не представляется возможным. Подскажите, пожалуйста, возможные пути решения!

Answer 1

Вы добавляете свойство KeyCode? и при событии onkeydown записываете текущию клавишу, а в onkeyup задаете этому свойству null. А в mousedown проверяете это свойство. Свойство должно иметь тип, на конце которого должен быть знак вопроса.

Answer 2

Ф-ция IsKeyDown msdn

  if ( Keyboard.IsKeyDown(Key.LeftAlt) ||
       Keyboard.IsKeyDown(Key.RightAlt)) {
   }

Либо getkeystates msdn

И есть Состояние Modifiers msdn

if ((Keyboard.Modifiers & ModifierKeys.Alt) > 0) {
    }
READ ALSO
C# ASP.NET Signalr OnConnected OnDisconnected

C# ASP.NET Signalr OnConnected OnDisconnected

Во время разработки возникла проблема, и есть подозрения что метод OnDisconnected может вызваться асинхронно до того как завершится метод OnConnected,...

115
DataGridViewComboboxCell отобразить список [закрыт]

DataGridViewComboboxCell отобразить список [закрыт]

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском

170
SQL фильтрация дубликатов

SQL фильтрация дубликатов

Вопрос заключается в следующем : Есть база данных postgre, в ней есть таблица вот такого вида Из за сбоя в службе которая собирает статистику...

88