我在將面板添加eventhandler時遇到了問題。將KeyPress事件添加到主面板的問題
我已經在這裏檢查了堆棧中的答案,但它們並不適合我。
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += new KeyPressEventHandler(object sender,KeyEventArgs e)
Visual Studio告訴我sender
不存在。
我在將面板添加eventhandler時遇到了問題。將KeyPress事件添加到主面板的問題
我已經在這裏檢查了堆棧中的答案,但它們並不適合我。
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += new KeyPressEventHandler(object sender,KeyEventArgs e)
Visual Studio告訴我sender
不存在。
你的問題已經超出了錯誤的語法和艇員選拔錯誤,不支持的情況下..:
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();
}
一切工作正常!非常感謝你的幫助:) 我也發現了你提供給我的非常有趣的問題描述。這是非常有益的,我希望它會阻止我做更多這樣的錯誤:) –
的按鍵事件處理函數必須接受這些參數 對於在線版本,就像你有這樣的事情
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += new KeyPressEventHandler((sender, e) => { ... })
你也可以刪除新KeyPressEventHandler聲明,縮短到像這樣的方法
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += (sender, e) => { ... };
您是否看到,閱讀,理解我的文章? – TaW
@TaW是的,我看到了你的文章,今晚我會檢查它並給你回覆 –