2015-12-22 1 views
0

У меня возникла проблема с добавлением обработчика событий на панель.Проблема с добавлением события KeyPress на главную панель в форме

Я уже проверял ответы здесь в стеке, однако они не работают для меня.

Panel panel_glowny = new Panel(); 
panel_glowny.KeyPress += new KeyPressEventHandler(object sender,KeyEventArgs e) 

Visual Studio сообщает, что sender не существует.

+0

Вы видели, читали, понимали мое сообщение? – TaW

+0

@TaW да я видел ваше сообщение, в эту ночь я проверю его и дам вам ответ –

ответ

1

Ваша проблема выходит за рамки неправильного синтаксиса и они выбрали неправильный, неподдерживаемый событие ..:

A Panel не получает нажатия клавиш или даже фокусировки. Поэтому обработчик KeyPress не поддерживается в Intellisense. Вы можете добавить его, но это не сработает.

Так что вам нужна помощь в виде и необходимо установить фокус на панель в коде ..

Нам нужно установить свойство KeyPreview формы так, чтобы он перехватывает все нажатия клавиш; и вам также нужно установить фокус на Panel каждый раз, когда вы хотите, чтобы он получил эти нажатия клавиш. Удостоверьтесь, чтобы не отодвигать фокус снова!

panel_glowny.PreviewKeyDown += panel_glowny_PreviewKeyDown; // necessary once 
KeyPreview = true;          // necessary once 
panel_glowny.Focus();         // may be necessary more than once!! 

void panel_glowny_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e) 
{ 
    throw new NotImplementedException(); 
} 
+0

Все работает правильно! Большое спасибо за помощь :) Я также нашел очень интересное описание проблемы, которую вы мне предоставили. это очень полезно, и я надеюсь, что это помешает мне сделать больше таких ошибок :) –

0

нажатие клавиши обработчик события должен быть метод, который принимает эти параметры Для инлайн версии, как у вас есть что-то вроде этого

Panel panel_glowny = new Panel(); 
panel_glowny.KeyPress += new KeyPressEventHandler((sender, e) => { ... }) 

вы также можете удалить новое заявление KeyPressEventHandler и укоротить его на что-то вроде этого

Panel panel_glowny = new Panel(); 
panel_glowny.KeyPress += (sender, e) => { ... };