Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
rokiss33
2 / 2 / 1
Регистрация: 24.08.2013
Сообщений: 63
#1

Перехват нажатия стрелок на форме при других контролах

10.12.2013, 02:18. Просмотров 838. Ответов 5
Метки нет (Все метки)

C#
1
2
3
4
5
6
7
private void keyDown(object sender, KeyEventArgs e)
        { 
            if (e.KeyCode.Equals(Keys.A))
                 {
                    MessageBox.Show("fsdfss");
                 }
        }
Так все работает
C#
1
2
3
4
5
6
7
private void keyDown(object sender, KeyEventArgs e)
        { 
            if (e.KeyCode.Equals(Keys.UP))
                 {
                    MessageBox.Show("fsdfss");
                 }
        }
А так при нажатии клавиши вверх я просто прыгаю по контролах.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2013, 02:18
Ответы с готовыми решениями:

Перехват нажатия клавиш стрелок вправо и влево
Перехватить простые клавиши у меня получается, а как перехватить стрелки вправо...

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

Перехват нажатия клавиши на форме
Есть Forma и User_Control мне нужно перехватить нажатие клавиши. То Есть...

Отлавливать нажатия стрелок
Может данная тема уже затрагивалась, но что-то поиском не могу найти и гугил не...

Обработка нажатия стрелок клавиатуры
Мне нужно обработать события на клавиши "вверх", "вниз" "вправо","влево"....

5
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
10.12.2013, 10:15 #2
В конструкторе формы:
C#
1
KeyPreview = true;
0
rokiss33
2 / 2 / 1
Регистрация: 24.08.2013
Сообщений: 63
10.12.2013, 19:57  [ТС] #3
Без
C#
1
KeyPreview = true;
и первый вариант не работает Так что оно у меня стоит.
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
10.12.2013, 21:51 #4
Из гугла:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
    public partial class Form1 : Form, IMessageFilter
    {
        const int WM_KEYDOWN = 0x100;
        const int WM_KEYUP = 0x101;
        const int WM_SYSKEYDOWN = 0x104;
        Keys lastKeyPressed = Keys.None;
 
        public Form1()
        {
            InitializeComponent();
            Application.AddMessageFilter(this);
            this.FormClosed += (s, e) => Application.RemoveMessageFilter(this);
        }
 
        public bool PreFilterMessage(ref Message m)
        {
            if (m.Msg == WM_KEYUP)
            {
                Debug.WriteLine("Filter -> KeyUp LastKeyPressed=" + lastKeyPressed.ToString());
            }
            return false;
        }
 
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
            {
                lastKeyPressed = keyData;
                switch (keyData)
                {
                    case Keys.Down:
                        Debug.WriteLine("Down Arrow Captured");
                        break;
 
                    case Keys.Up:
                        Debug.WriteLine("Up Arrow Captured");
                        break;
 
                    case Keys.Tab:
                        Debug.WriteLine("Tab Key Captured");
                        break;
 
                    case Keys.Control | Keys.M:
                        Debug.WriteLine("<CTRL> + M Captured");
                        break;
 
                    case Keys.Alt | Keys.Z:
                        Debug.WriteLine("<ALT> + Z Captured");
                        break;
                }
            }
 
            return base.ProcessCmdKey(ref msg, keyData);
        }
    }
1
kodv
1419 / 1093 / 344
Регистрация: 11.04.2011
Сообщений: 2,606
Завершенные тесты: 1
11.12.2013, 06:50 #5
rokiss33, Значит нужно начать сначала. Обработчик события KeyDown какого контрола вы предоставили? Для какого контролы вы задаете свойство KeyPreview равным true? Потому что если ответ на оба вопроса - это одна и та же форма, то в пределах этой формы все должно работать.

Добавлено через 3 минуты
rokiss33, в перечислении Keys нет значения UP, есть только Up.
0
646kapeh064
59 / 58 / 16
Регистрация: 09.12.2013
Сообщений: 208
11.12.2013, 20:19 #6
kodv, клавиша Up не отлавливается при KeyPreview почему-то, проверь сам) А вот остальные, типа A B и т.п. на отлично ловятся
0
11.12.2013, 20:19
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2013, 20:19

Не работает событие нажатия стрелок
Сначала данный код работал хорошо: private void Form1_KeyDown(object sender,...

перехват нажатия клавиши
Здравствуйте, как реализовать такое: Есть пустая форма, при нажатии клавиши...

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


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

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

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