保护一些东西免于透支

时间:2013-03-05 11:44:27

标签: c# winforms

我在Panel中有一个绘制的栅格,仅用于调整。在此栅格上,用户可以构建简单的环境。我添加了一些功能,以便用户可以调整连接。问题是超越的一切都被涂上了。有没有可能做那样的事情? 我添加了两个截图,所以我的意思更清楚了:

http://www.pic-upload.de/gal-337018/f5lsv1/1.html

代码:

private void UserMovesButton(object sender, MouseEventArgs e)
{
    if (e.Button == System.Windows.Forms.MouseButtons.Left)
    {
        if (FirstFinished != 0)
        {
            dummy.Color = MainPanel.BackColor;
            Start = connectionButtons[ActualIndex - 1].Location;
            drawline();
            Start = connectionButtons[ActualIndex + 1].Location;
            drawline();
        }
        dummy.Color = Color.Black;
        Control controlToMove = (Control)sender;
        controlToMove.BringToFront();
        controlToMove.Location = new Point(controlToMove.Location.X + e.Location.X - 10,
            controlToMove.Location.Y + e.Location.Y - 10);
        {
            Start = connectionButtons[ActualIndex - 1].Location;
            Stop.X = controlToMove.Location.X + e.Location.X - 10;
            Stop.Y = controlToMove.Location.Y + e.Location.Y - 10;
            FirstFinished = 1;
            drawline();
            Start = connectionButtons[ActualIndex + 1].Location;
            drawline();
            Thread.Sleep(10);
        }
    }
}

(连接按钮是一个包含按钮的列表)

我已经考虑过使用z轴,但是drawline不支持这样的东西。

1 个答案:

答案 0 :(得分:2)

不确定drawLine()方法的作用,但我假设您使用它来绘制UserControl。这不是正确的方法。您应该从UserControl派生,覆盖OnPaint()方法并在那里进行绘制(从最底层的对象开始)。要确保在更改数据结构后调用OnPaint(),您可以使用Invalidate()的{​​{1}}或Refresh()方法。