C# WPF实现鼠标拖动的代码片

版权声明:本文为博主原创文章,转载请发邮件到[email protected]授权。 https://blog.csdn.net/qq_33712555/article/details/83788392

C# WPF实现鼠标拖动的代码片

///可表示实时拖动
void xxx_PreviewMouseLeftButtonUp(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    IsMouseLeftBtnDown = false;
    IsMouseLeftBtnUp = true;
}

/// <summary>
/// 是否按下鼠标左键
/// </summary>
private bool IsMouseLeftBtnDown = false;
/// <summary>
/// 是否松开鼠标左键
/// </summary>
private bool IsMouseLeftBtnUp = true;
/// <summary>
/// 鼠标拖动期间 x轴偏移量
/// </summary>
private double xOffset = 0;
/// <summary>
/// 鼠标按下点在X轴的位置
/// </summary>
private double xDown = 0;
/// <summary>
/// 鼠标松开点在X轴的位置
/// </summary>
private double xUp = 0;

void xxx_PreviewMouseLeftButtonDown(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    IsMouseLeftBtnDown = true;
    IsMouseLeftBtnUp = false;

	xDown = e.GetPosition(this).X;
}

void xxx_PreviewMouseMove(System.Object sender, System.Windows.Input.MouseEventArgs e)
{
    if (IsMouseLeftBtnDown && !IsMouseLeftBtnUp)
    {
        xUp = e.GetPosition(this).X;
        xOffset = xDown - xUp;
        xDown = xMove;//改变当前鼠标按下位置,这样曲线就可以随着鼠标移动方向而准确移动

        txTagName8.Text = xOffset.ToString();
    }
}


///鼠标弹起时发生操作,这样就不是实时的了
void CurvePnl_PreviewMouseLeftButtonUp(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    IsMouseLeftBtnDown = false;
    IsMouseLeftBtnUp = true;
    
    xUp = e.GetPosition(this).X;
    xOffset = xDown - xUp;
    xDown = xMove;//改变当前鼠标按下位置,这样曲线就可以随着鼠标移动方向而准确移动

    txTagName8.Text = xOffset.ToString();
}

/// <summary>
/// 是否按下鼠标左键
/// </summary>
private bool IsMouseLeftBtnDown = false;
/// <summary>
/// 是否松开鼠标左键
/// </summary>
private bool IsMouseLeftBtnUp = true;
/// <summary>
/// 鼠标拖动期间 x轴偏移量
/// </summary>
private double xOffset = 0;
/// <summary>
/// 鼠标按下点在X轴的位置
/// </summary>
private double xDown = 0;
/// <summary>
/// 鼠标松开点在X轴的位置
/// </summary>
private double xUp = 0;

void CurvePnl_PreviewMouseLeftButtonDown(System.Object sender, System.Windows.Input.MouseButtonEventArgs e)
{
    IsMouseLeftBtnDown = true;
    IsMouseLeftBtnUp = false;

    xDown = e.GetPosition(this).X;
}

void CurvePnl_PreviewMouseMove(System.Object sender, System.Windows.Input.MouseEventArgs e)
{
    if (IsMouseLeftBtnDown && !IsMouseLeftBtnUp)
    {
        //这里没有操作
    }
}

以上就是鼠标拖动的两种刷新策略。

猜你喜欢

转载自blog.csdn.net/qq_33712555/article/details/83788392