2015-12-22 51 views
0

我在將面板添加eventhandler時遇到了問題。將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_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) => { ... };