我在向面板添加eventhandler时遇到了问题。
我已经在堆栈中检查了答案,但它们对我不起作用。
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += new KeyPressEventHandler(object sender,KeyEventArgs e)
Visual Studio告诉我sender
不存在。
答案 0 :(得分:1)
您的问题超出了错误的语法并选择了错误的,不受支持的事件..:
Panel
不会收到按键或甚至是焦点。这就是KeyPress
中不支持Intellisense
处理程序的原因。你可以添加它,但它不会起作用。
所以你需要表格的帮助和需要在代码中将焦点设置到面板..
我们需要设置Form 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();
}
答案 1 :(得分:0)
keypress事件处理程序需要是接受这些参数的方法 对于像你这样的内联版本
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += new KeyPressEventHandler((sender, e) => { ... })
您还可以删除新的KeyPressEventHandler语句并将其缩短为类似
Panel panel_glowny = new Panel();
panel_glowny.KeyPress += (sender, e) => { ... };