Лучший отвечающий
Захват отпускания кнопки.

Вопрос
-
Я знаю код захвата нажатия клавиши, но мне нужен захват отпускания.
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
24 апреля 2012 г. 10:21
Ответы
-
Не очень понятен вопрос, но если вы про то, что в приложении пользователь зажал и держит клавишу, а потом вам надо отследить момент когда он ее отпустил, то в WPF приложениях вы можете использовать событие KeyUp. В WinForms оно, вроде, также называется.
Или вы имели в виду нечто другое?- Помечено в качестве ответа Doctor Gordon 24 апреля 2012 г. 11:04
24 апреля 2012 г. 10:31Отвечающий
Все ответы
-
Не очень понятен вопрос, но если вы про то, что в приложении пользователь зажал и держит клавишу, а потом вам надо отследить момент когда он ее отпустил, то в WPF приложениях вы можете использовать событие KeyUp. В WinForms оно, вроде, также называется.
Или вы имели в виду нечто другое?- Помечено в качестве ответа Doctor Gordon 24 апреля 2012 г. 11:04
24 апреля 2012 г. 10:31Отвечающий -
Не очень понятен вопрос, но если вы про то, что в приложении пользователь зажал и держит клавишу, а потом вам надо отследить момент когда он ее отпустил, то в WPF приложениях вы можете использовать событие KeyUp. В WinForms оно, вроде, также называется.
Или вы имели в виду нечто другое?Всё правильно, но KeyUp работает не нормально как и KeyDown, и поэтому я использую следующий код для захвата нажатия клавиши:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { switch (keyData) { case Keys.Up: { MessageBox.Show("Up"); break; } } return base.ProcessCmdKey(ref msg, keyData); }
Но оно захватывает нажатие клавиши, нужно чтото на подобии него, а не KeyUp, KeyUp не работает если фокус не на элементе.
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
- Изменено Doctor Gordon 24 апреля 2012 г. 10:33
24 апреля 2012 г. 10:33 -
Если у вас проблема с фокусом, то в WinForms у формы есть свойство keyPreview. Если его установить в true, то все нажатия клавиш будут приходить сначала в нее, а потом в тот контрол в котором фокус. Если у вас приложение WPF, то в форму оно будет приходить в любом случае.
Т.е. если вы хотите перехватывать все нажатия клавиш на форме (Form, Window), то вам и обработчик надо у формы (Form, Window), только в WinForm еще 1 настройку надо будет сделать. (см выше).
- Предложено в качестве ответа Abolmasov Dmitry 24 апреля 2012 г. 10:50
- Изменено Алексей ЛосевEditor 24 апреля 2012 г. 11:00
24 апреля 2012 г. 10:44Отвечающий -
Если у вас проблема с фокусом, то в WinForms у формы есть свойство keyPreview. Если его установить в true, то все нажатия клавиш будут приходить в сначала в нее, а потом в тот контрол в котором фокус. Если у вас приложение WPF, то в форму оно будет приходить в любом случае.
Т.е. если вы хотите перехватывать все нажатия клавиш на форме (Form, Window), то вам и обработчик надо у формы (Form, Window), только в WinForm еще 1 настройку надо будет сделать. (см выше).
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
- Изменено Doctor Gordon 24 апреля 2012 г. 11:04
24 апреля 2012 г. 11:01 -
Да, будет лучше всего если вы приведете неработающий пример, так проще будет вам помочь. По возможности еще опишите что находится на форме и в какой момент и на чем нужно отловить KeyUp.
Для связи [mail]
24 апреля 2012 г. 11:04 -
Да, будет лучше всего если вы приведете неработающий пример, так проще будет вам помочь. По возможности еще опишите что находится на форме и в какой момент и на чем нужно отловить KeyUp.
Для связи [mail]
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
24 апреля 2012 г. 11:04 -
Вот проблема о которой я говорил:
http://www.youtube.com/watch?v=pxXR86sPMyg&feature=youtu.be
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
28 апреля 2012 г. 18:06 -
Попробуйте так:
public partial class Form1 : Form { private static int WM_KEYUP = 0x0101; public Form1() { InitializeComponent(); this.KeyPreview = true; } protected override bool ProcessKeyEventArgs(ref Message m) { //MessageBox.Show(m.Msg.ToString()); if (m.Msg == WM_KEYUP) { switch (m.WParam.ToInt32()) { case (int)Keys.Up: MessageBox.Show("up"); break; case (int)Keys.Down: MessageBox.Show("down"); break; case (int)Keys.Left: MessageBox.Show("left"); break; case (int)Keys.Right: MessageBox.Show("right"); break; } } return base.ProcessKeyEventArgs(ref m); } }
Для связи [mail]
28 апреля 2012 г. 20:59 -
Попробуйте так:
Ясно, если метод реагирует на отпускание мышки то это то что надо, но это трудно для моего понимания.
Бог движок на котором мы написаны, а Библия компилятор, и верующие постоянно компилируют себя в нём.
29 апреля 2012 г. 7:13