Стоит задача реализовать очистку 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");
}
}
Чтобы можно было различить разницу между 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;
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости