移动控件时重绘问题

时间:2015-01-15 04:16:37

标签: c# winforms controls

我试图用鼠标在WinForm上移动一些控件。我正在使用下面的代码。要查看我的问题,请在VS中启动一个新项目,添加以下代码。将表单BackGroundImage设置为任何图像,然后添加任何控件。设置MouseUp,MouseDown和MouseMove的控件事件。开始调试,单击并移动控件。表单中的图像开始被删除。我已经尝试了几种不同的悬挂绘图类和我在网上找到的方法,但是我找不到任何东西让我可以移动控件而不会出现严重的闪烁或无法看到移动。任何帮助将不胜感激。

P.S。如果您将相同的事件设置为表单的向上,向下和向下事件,它会在没有任何闪烁的情况下正常运行。

private bool _mouseDown;
private Point _startPoint;
private void Event_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        _mouseDown = true;
        _startPoint = new Point(e.X, e.Y);
    }
}

private void Event_MouseUp(object sender, MouseEventArgs e)
{
    _mouseDown = false;
}

private void Event_MouseMove(object sender, MouseEventArgs e)
{
    if (_mouseDown)
    {
        Control s = sender as Control;
        s.Location = new Point(e.X + s.Left - _startPoint.X, e.Y + s.Top - _startPoint.Y);
    }
}

0 个答案:

没有答案
相关问题