将键移动事件更改为鼠标单击并移动c#

时间:2014-03-20 22:08:44

标签: c# silverlight visual-studio-2012 mouse

好到目前为止我有

private void UserControl_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Up)
            this.Pin.Move(Direction.Up);
        if (e.Key == Key.Down)
            this.Pin.Move(Direction.Down);
        if (e.Key == Key.Left)
            this.Pin.Move(Direction.Left);
        if (e.Key == Key.Right)
            this.Pin.Move(Direction.Right);
    }

很棒,我可以向左和向右移动我的物体。我想用我的souse光标来控制它。任何想法我会怎么做。 我不擅长这个并且刚刚开始做一些指针。

2 个答案:

答案 0 :(得分:1)

我怀疑您要覆盖UserControl的OnMouseMove方法。然后,您可以查看从该处理程序获得的MouseEventArgs,并使用GetPosition方法获取鼠标坐标。

如果您将此点存储在某处的局部变量中,则在第一次鼠标移动后,您可以将其进行比较并沿适当的方向移动它。代码的示例可能是

private Point prev;

private void UserControl_OnMouseMove(object sender, MouseEventArgs e)
{
    Point p = e.GetPosition();
    if(prev == null)
       prev = p;

    if(p.Y > prev.Y) 
         this.Pin.Move(Direction.Up);
    else if(p.Y < prev.Y) 
          this.Pin.Move(Direction.Down);
    etc. 
    prev = p;
}

希望这有帮助

答案 1 :(得分:1)

以下内容可能会帮助您进行修改以适合您的实施

private bool _isMouseDown;

  private void UserControl_MouseMove(object sender, MouseEventArgs e)
        {
            if (_isMouseDown)
            {
                this.Pin.Location = new Point(e.X,e.Y);
            }
        }

        private void UserControl_MouseDown(object sender, MouseEventArgs e)
        {

            _isMouseDown = true;
        }
        private void UserControl_MouseUp(object sender, MouseEventArgs e)
        {
            _isMouseDown = false;
        }