2010-12-14 4 views
2

Я знаю, что это может быть легким ответом для некоторых из вас, но я не знаю, как правильно это сделать. Ive создал текстовый редактор, который также имеет окно стыковки, которое будет отображать функции. Я установил в меню, что F8 - это комбинация клавиш для отображения функционального окна. Я хотел бы также, чтобы поймать событие F8 нажатие для синтаксического анализа текущих данных для функций в программе, но я не могу получить, чтобы это произошло ..Overpiding keypress

+0

Что странно, я могу нажать любую из клавиш f, и ничего не происходит, но если я нажму на обычный ключ, он остановится. – mookie

+0

см. Изменения по моему ответу – msarchet

ответ

3

Снимайте Текстовые редакторы Keypressed события и проверить KeyEventArgs, которые поступают, затем отметьте не обрабатываются как ложные, что вызовет событие будет принято до родительского контроля:

Примера

KeyPressed(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.F8) DoSomething(); 
    e.Handled = false; 
} 

В ответ на комментарий, добавленный в ваш вопрос. Вам может потребоваться установить для элементов управления KeyPreview значение True. Я думаю, что KeyPreview может быть доступен только на уровне формы, но я не уверен.

+0

Я думаю, что у вас есть это в обратном направлении. Установка свойства «e.Handled» в значение true приведет к тому, что событие, распространяющее дерево управления, при установке «e.Handled» в false, позволит другим элементам управления захватить его. –

+0

@Mike Webb ahhh опечатка в моем объяснении, спасибо – msarchet

+0

Ой, подождите. Прости, я думал, ты говоришь наоборот. Смешение. Могу немного повторить ваш ответ. –

1

Настройка обработчика событий для события OnKeyPress (или OnKeyDown или OnKeyUp), и проверьте, какая клавиша была нажата (это будет в аргументах события). Тогда вы можете делать все, что хотите.

0

Я не уверен, что все понимаю, но не можете ли вы использовать KeyPress Event в любом элементе управления?

1

Я не думаю, что отмеченный ответ правильный. Обработчик события KeyPress не будет обрабатывать функциональные клавиши; вам нужно использовать обработчик событий KeyUp или метод ProcessDialogKey.