温馨提示×

WPF中鼠标拖拽事件怎么封装

wpf
小亿
82
2024-03-08 15:01:25
栏目: 编程语言

在WPF中,可以使用MouseLeftButtonDownMouseLeftButtonUpMouseMove事件来实现鼠标拖拽功能的封装。以下是一个简单的示例:

public class DraggableControl : Control
{
    private bool isDragging = false;

    public DraggableControl()
    {
        this.MouseLeftButtonDown += DraggableControl_MouseLeftButtonDown;
        this.MouseLeftButtonUp += DraggableControl_MouseLeftButtonUp;
        this.MouseMove += DraggableControl_MouseMove;
    }

    private void DraggableControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (e.LeftButton == MouseButtonState.Pressed)
        {
            isDragging = true;
            this.CaptureMouse();
        }
    }

    private void DraggableControl_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        if (isDragging)
        {
            isDragging = false;
            this.ReleaseMouseCapture();
        }
    }

    private void DraggableControl_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDragging)
        {
            Point currentPosition = e.GetPosition(this.Parent as UIElement);
            Canvas.SetLeft(this, currentPosition.X - (this.ActualWidth / 2));
            Canvas.SetTop(this, currentPosition.Y - (this.ActualHeight / 2));
        }
    }
}

使用这个DraggableControl类可以方便地给任意的WPF控件添加鼠标拖拽功能。只需要在XAML文件中声明DraggableControl替代原本的控件即可。

0