鼠标单击并拖动事件 WPF
Posted
技术标签:
【中文标题】鼠标单击并拖动事件 WPF【英文标题】:Mouse click and drag Event WPF 【发布时间】:2013-06-30 18:28:55 【问题描述】:我正在开发一个模拟时钟选择器控件。 用户可以单击分针或时针并拖动以转动指针以选择特定时间。我想知道如何检测这样的点击和拖动事件。
我尝试使用 MouseLeftButtonDown + MouseMove 但我无法让它工作,因为尽管我使用了标志,但当 mousemove 发生时总是触发 MouseMove。有没有更简单的方法?
public bool dragAction = false;
private void minuteHand_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
dragAction = true;
minuteHand_MouseMove(this.minuteHand, e);
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
if (dragAction == true)
//my code: moving the needle
private void minuteHand_MouseLeftButtonUp(object sender, MouseEventArgs e)
dragAction = false;
【问题讨论】:
【参考方案1】:我认为这是最简单和最直接的方法:
private void Window_MouseMove(object sender, MouseEventArgs e)
if (e.LeftButton == MouseButtonState.Pressed)
this.DragMove();
【讨论】:
【参考方案2】:public bool dragAction = false;
private void minuteHand_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
dragAction = true;
minuteHand_MouseMove(this.minuteHand, e);
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
if (dragAction == true)
this.DragMove();
private void minuteHand_MouseLeftButtonUp(object sender, MouseEventArgs e)
dragAction = false;
成功了
【讨论】:
这不是和原帖一样吗? 原件丢失:this.DragMove() 函数【参考方案3】:你可以让事情变得更简单,不需要处理鼠标向下/向上:
private void minuteHand_MouseMove(object sender, MouseEventArgs e)
if (Mouse.LeftButton == MouseButtonState.Pressed)
//my code: moving the needle
【讨论】:
我希望用户点击并拖动而不是移动鼠标。 在 wpf 拖放中,始终使用 PreviewMouseDown。这样,您将使用 MouseMove 实现它。 (MousDown 冒泡,不适合拖拽)以上是关于鼠标单击并拖动事件 WPF的主要内容,如果未能解决你的问题,请参考以下文章