Как добраться, событие Keypress в Windows Panel управляют в C#

я хочу получить событие нажатия клавиши в управлении панелью окон в c#, любая справка тела для меня...

10
задан ratty 24 December 2010 в 05:06
поделиться

3 ответа

Вы должны обрабатывать Панель . Keypress событие.

Пример

public void MyKeyPressEventHandler(Object sender, KeyPressEventArgs e)
{
    ... do something when key is pressed.
}

...

(MyPanel as Control).KeyPress += new KeyPressEventHandler(MyKeyPressEventHandler);
11
ответ дан 3 December 2019 в 16:52
поделиться

Проблема в том, что сначала ваша основная форма получила клавиш и немедленно отправит это сообщение активному управлению. Если это не обрабатывает этот ключ, нажмите, он будет организован к родительскому управлению и так далее.

Чтобы перехватить эту цепочку, вы должны в вашей Form. KkyPreview - true true и добавьте обработчик в форму . KyeyPress . Теперь вы можете обрабатывать нажатый ключ в пределах своей формы.

9
ответ дан 3 December 2019 в 16:52
поделиться

Объекты «Панель» не могут правильно получать событие «Нажатие клавиши».

Я создал перегрузку 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);
}
3
ответ дан 3 December 2019 в 16:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: