我正在制作一个带有用户控件面板的程序。我想让它能够移动。在用户控件上,我已经设置了一个Key Down事件处理程序,但这不起作用。我想知道问题是不是那个有焦点的控件?如果不是,我怎么能确保它呢?我在用户控件(MainMap)下尝试过:
KeyDown += new KeyEventHandler(keyDown);
public void keyDown(object sender, KeyEventArgs e)
{
switch (e.KeyData)
{
case Keys.Right:
panel1.Location = new Point(panel1.Location.X + 5, panel1.Location.Y);
Invalidate();
break;
}
}
由于
答案 0 :(得分:1)
你几乎就是唯一的问题就是焦点。但是,如果不使用PreviewKeyDown事件来控制控件,您仍然可以实现相同的目的,所以只需更改代码即可使用相同的内容。
PreviewKeyDown += PreviewKeyDownHandler;
public void PreviewKeyDownHandler(object sender, PreviewKeyDownEventArgs e)
{
switch (e.KeyData)
{
case Keys.Right:
panel1.Location = new Point(panel1.Location.X + 5, panel1.Location.Y);
Invalidate();
break;
}
}
无论是否专注于控制,这都会有效。