Обработчик shift и shift + del

42
16 июля 2019, 16:40

Стоит задача реализовать очистку listbox на нажатие Shift и очистку textbox на нажатие комбинации клавиш Shift + Del. Как не писал обработчики всегда так происходит что срабатывает shift но не обрабатывается Shift + Del.

private void Form1_KeyDown(object sender, KeyEventArgs e)
{
    if(e.Shift && e.KeyCode == Keys.Delete)
    {
        MessageBox.Show("del");
    }
    else if (e.Shift)
    {
        MessageBox.Show("shift");
    }
}
Answer 1

Чтобы можно было различить разницу между Shift и комбинацией Shift + Del, нам нужно захватить события KeyDown и KeyUp и использовать информацию, полученную от каждого из них.

private Keys LastKeysDown; 
private void MainForm_KeyDown(object sender, KeyEventArgs e)
{
    LastKeysDown = e.KeyData;
}

В событии KeyUp мы смотрим, какие клавиши были отпущены относительно того, что было нажато в последний раз.

private void MainForm_KeyUp(object sender, KeyEventArgs e)
{
    if (LastKeysDown == (Keys.Shift | Keys.Delete) && e.KeyData == LastKeysDown)
        textBox1.Clear();
    else if (LastKeysDown == (Keys.Shift | Keys.ShiftKey) && e.KeyData == Keys.ShiftKey)
        listBox1.Items.Clear();
    LastKeysDown = Keys.None;
}
READ ALSO
Как загрузить готовое Android-приложение (файл .apk) в эмулируемую среду в Visual Studio, чтобы оно там было изначально?

Как загрузить готовое Android-приложение (файл .apk) в эмулируемую среду в Visual Studio, чтобы оно там было изначально?

Мне нужно создавать автоматизированные тесты для Android-приложения в Visual Studio при помощи XamarinUITest

51
Как подключить клиент к серверу через cloudflare

Как подключить клиент к серверу через cloudflare

Есть клиент-север, есть прога для тестирования соединения, есть домен через cloudflare, но если добавить srv запись _myserver_tcp

33
Изменить цвет текста на #FF00CED1

Изменить цвет текста на #FF00CED1

Как изменить цвет текста в консоли на #FF00CED1 (DarkTurquoise) ?

47
Распаковка архива с заменой файлов

Распаковка архива с заменой файлов

Как распаковать архив с заменой файлов? Сейчас при распаковке архива полностью удаляю файлы и директорию, а уже потом на это место распаковываю...

33