Форум программистов, компьютерный форум, киберфорум
Наши страницы

C# Windows Forms

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 81, средняя оценка - 4.60
body90
366 / 299 / 8
Регистрация: 26.05.2009
Сообщений: 2,676
#1

Событие нажатия сочетания клавиш - C#

27.11.2009, 00:12. Просмотров 12921. Ответов 7
Метки нет (Все метки)

Здравствуйте! Подскажите:
1) Как сделать в форме другую реакцию на ALT+F4?
2) Как вообще обрабатывать сочетания?
3) Как определить, что была нажата клавиша со стрелкой?

Пробовал так:
C#
1
2
3
4
5
6
7
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
        if (e.KeyChar == 13)
        {
                e.Handled = true;
        }
}
но не знаю как проверить на сочетание клавиш или на клавиши, имеющие дбубитные значения (стрелки и т. д.)
2
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2009, 00:12
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Событие нажатия сочетания клавиш (C#):

.NET 4.x Перехват нажатия сочетания клавиш в пределах формы - C#
Мне надо обработать сообщение с клавиатуры что бы пользователь нажимал на ctrl + r ,регистр не имеет значение. Я знаю Как обработать...

Сочетания клавиш в DataGridView - C#
Привет всем. Такой вопрос, как в datagridview поймать сочетания клавиш по типу Ctrl+C, Ctrl+V и т.п.?

Как назначить сочетания клавиш? - C#
Помогите пожалуйста зарегистрировать горячие клавиши.К примеру я запускаю форму,и при сочетании клавиши Alt + F1, я закрываю программу....

Нажатие сочетания клавиш из программы - C#
Хочу создать программу, которая сама будет нажимать сочетание клавиш Ctrl + Shift + L через определенный промежуток времени бесконечное...

Не работает перехват сочетания клавиш - C#
private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Modifiers == Keys.Alt && e.KeyData == Keys.C) ...

Глобальный перехват сочетания клавиш Ctrl+V - C#
Не могу разобраться и никто не может мне помочь в этом вопросе, уже столько всего перепробовал! Буду очень рад тем кто поможет!!! Мне...

7
kirill29
2064 / 1227 / 55
Регистрация: 01.02.2009
Сообщений: 2,842
27.11.2009, 00:46 #2
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Перехват Alt+F4:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public Form1()
        {
            InitializeComponent();
            this.KeyPreview = true;
        }
 
        protected override void OnKeyDown(KeyEventArgs e)
        {
            base.OnKeyDown(e);
            if (e.KeyCode == Keys.F4&&e.Alt) 
            {
                MessageBox.Show("Тест");
                e.Handled = true;
            }
        }
Добавлено через 3 минуты
Таким же макаром и нажатие на стрелки:
C#
1
2
3
4
5
if (e.KeyCode == Keys.Down||e.KeyCode ==Keys.Left||e.KeyCode ==Keys.Right||e.KeyCode ==Keys.Up) 
            {
                MessageBox.Show("Тест");
                e.Handled = true;
            }
21
gyrgen
10 / 10 / 4
Регистрация: 24.04.2017
Сообщений: 30
Записей в блоге: 5
13.06.2017, 13:35 #3
А как отследить нажатие если приложение свёрнуто?
0
SatanaXIII
Супер-модератор
Эксперт С++
5694 / 2749 / 258
Регистрация: 01.11.2011
Сообщений: 6,710
Завершенные тесты: 1
23.05.2018, 15:02 #4
Цитата Сообщение от gyrgen Посмотреть сообщение
А как отследить нажатие если приложение свёрнуто?
Если приложение свернуто, то нажатие ему не передастся.
0
Andreyip
19 / 19 / 7
Регистрация: 17.08.2014
Сообщений: 128
23.05.2018, 15:42 #5
SatanaXIII,
каким образом тогда работает puntoswitcher через Winapi?
0
SatanaXIII
Супер-модератор
Эксперт С++
5694 / 2749 / 258
Регистрация: 01.11.2011
Сообщений: 6,710
Завершенные тесты: 1
23.05.2018, 15:59 #6
Andreyip, да. Нажатие передается системе; система определяет кто из запущенных приложений в данный момент ожидает ввода и отсылает ему нажатую клавишу. Puntoswitcher либо перехватывает это нажатие, обрабатывает его, а потом сам отправляет ожидающему приложению, либо после обработки отдает обратно системе, чтобы та отнесла уже на место.
1
Andreyip
19 / 19 / 7
Регистрация: 17.08.2014
Сообщений: 128
23.05.2018, 16:01 #7
SatanaXIII, Ясно, спасибо за разъяснение.
0
gyrgen
10 / 10 / 4
Регистрация: 24.04.2017
Сообщений: 30
Записей в блоге: 5
26.05.2018, 15:30 #8
А может есть какие-нить примеры реализации этого?
0
26.05.2018, 15:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2018, 15:30
Привет! Вот еще темы с ответами:

Возможно ли создать нестандартные сочетания клавиш - C#
Возможно ли создать сочетание клавиш типа "6+стрелка вверх"?

Имитация нажатия клавиш - C#
Всем привет,как сделать на c# эмуляцию нажатия клавиш,т.е окно программы было не активно,а в активном окне нажимались нужные мне...

Перехват нажатия определённых клавиш - C#
Какой нужно сделать код, чтобы блокировались нажатия определенных клавиш: например, при работе с формой, нажатие окошка не открывало меня...

Отлавливание нажатия клавиш глобально - C#
Как мне сделать, чтобы нажатия клавиш отлавливались из любого места в программе (не зависимо от того, какой контрол активен)? Подписывать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru