如何在UserControl上控制面板的移动?

时间:2014-05-05 00:30:30

标签: c# forms focus keydown

我正在制作一个带有用户控件面板的程序。我想让它能够移动。在用户控件上,我已经设置了一个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;
    }
}

由于

1 个答案:

答案 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;
    }
}

无论是否专注于控制,这都会有效。