C# - Обнаружение, если клавиша SHIFT сохранена при открытии контекстного меню

Из документации :

Чтобы соответствовать стандарту SQL, IN возвращает NULL не только если выражение на левая сторона - NULL, но также если совпадение не найдено в списке, а одно из выражений в списке - NULL.

Это как раз ваш случай.

И IN, и NOT IN возвращают NULL, что не является приемлемым условием для пункта WHERE.

Перепишите ваш запрос следующим образом:

SELECT  *
FROM    match m
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    email e
        WHERE   e.id = m.id
        )

39
задан Chris Thompson 10 June 2009 в 05:12
поделиться

2 ответа

Вы можете использовать статическое свойство ModifierKeys в элементе управления, чтобы определить, удерживается ли клавиша Shift.

if (Control.ModifierKeys == Keys.Shift ) { 
  ...
}

Это перечисление в стиле флага, поэтому, в зависимости от ситуации, вы можете захотеть провести более тщательное тестирование.

Также обратите внимание, что это будет проверять, удерживается ли клавиша Shift в момент проверки значения. Не тот момент, когда было инициировано открытие меню. Возможно, это несущественная разница для вашего приложения, но стоит отметить.

68
ответ дан 27 November 2019 в 02:06
поделиться

Используйте это, чтобы определить, нажата ли клавиша Shift:

if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift) 
39
ответ дан 27 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: