я хочу получить событие нажатия клавиши в управлении панелью окон в c#, любая справка тела для меня...
Вы должны обрабатывать Панель . Keypress событие.
Пример
public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
... do something when key is pressed.
}
...
(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);
Проблема в том, что сначала ваша основная форма получила клавиш и немедленно отправит это сообщение активному управлению. Если это не обрабатывает этот ключ, нажмите, он будет организован к родительскому управлению и так далее.
Чтобы перехватить эту цепочку, вы должны в вашей Form. KkyPreview
- true true
и добавьте обработчик в форму . KyeyPress
. Теперь вы можете обрабатывать нажатый ключ в пределах своей формы.
Объекты «Панель» не могут правильно получать событие «Нажатие клавиши».
Я создал перегрузку Panel
:
public class PersoPanel : Panel
и использовал переопределенный метод ProcessCmdKey
:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
для перехвата нажатых клавиш:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
MessageBox.Show("You press " + keyData.ToString());
// dO operations here...
return base.ProcessCmdKey(ref msg, keyData);
}