this.dragmove()干扰mouseup事件wpf

时间:2010-07-12 15:36:25

标签: wpf events drag-and-drop

我在WPF中有一个UserControl。 UserControl有一个MouseLeftMouseButtonUp事件。 问题是 - Window在其MouseDown事件中有一个this.DragMove()方法,它似乎干扰了用户控件中的MouseLeftMouseButtonUp(我需要this.DragMove()方法来移动无边框窗口)。 有任何想法吗? 谢谢!

4 个答案:

答案 0 :(得分:4)

DragMove 是一个同步调用;它会阻塞,直到用户完成移动窗口。这意味着一旦 DragMove 返回,左按钮就会 DragMove()调用后立即添加代码,你应该没问题。

答案 1 :(得分:2)

我遇到了同样的问题,但找到了答案。如果已经处理了MouseDown,则Window_MouseDown事件将不会运行,因此您只需添加以下代码即可阻止DragMove干扰控件的鼠标事件:

Private Sub YourControl_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles YourControl.MouseDown
    e.Handled = True
End Sub

答案 2 :(得分:0)

我也有这样的问题,发现使用点击事件代替鼠标按钮事件不会触发拖动。对于我的修复,我只需要换一个标签换一个按钮。您可以为usercontrol子类化不同的元素,以便您可以选择要使用的click事件吗?

答案 3 :(得分:0)

   private void  MouseDown(object sender, MouseButtonEventArgs e)
      {
          e.Handled = true;
          if (e.LeftButton == MouseButtonState.Pressed)
         {
            this.DragMove();
          }

          if (e.LeftButton == MouseButtonState.Released)
          {
          //your mouse up code
          }
      }