1

UserControl我用几个标签创建了简单的。如何实现简单的机制,允许像普通窗口一样移动整个控件(当我将它添加到 winForms 时 - 如果它有所不同)

4

1 回答 1

2

你可以使用我的 Capture 类:

public class ClsCapture
{
    bool bCaptureMe;
    Point pLocation = new Point();

    Control dd;
    //Handles dad.MouseDown, dd.MouseDown
    private void Form1_MouseDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        try {
            bCaptureMe = true;
            pLocation = e.GetPosition(sender);
        } catch {
        }
    }

    //Handles dad.MouseMove, dd.MouseMove
    private void Form1_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        try {

            if (bCaptureMe) {
                dd.Margin = new Thickness(dd.Margin.Left - pLocation.X + e.GetPosition(sender).X, dd.Margin.Top - pLocation.Y + e.GetPosition(sender).Y, dd.Margin.Right, dd.Margin.Bottom);

            }
        } catch {
        }
    }

    //Handles dad.MouseUp, dd.MouseUp
    private void Form1_MouseUp(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        try {
            bCaptureMe = false;
        } catch {
        }
    }

    public ClsCapture(Control pnl)
    {
        dd = pnl;
        dd.PreviewMouseLeftButtonDown += Form1_MouseDown;
        dd.PreviewMouseLeftButtonUp += Form1_MouseUp;
        dd.PreviewMouseMove += Form1_MouseMove;
    }

    public static void CaptureMe(Control pnl)
    {
        ClsCapture cc = new ClsCapture(pnl);
    }

}

用法:

ClsCapture.CaptureMe(AnyControlYouWant);
于 2012-04-12T11:48:44.290 回答