天天看點

C# WPF實作滑鼠拖動的代碼片

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)
    {
        //這裡沒有操作
    }
}