Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将按键移动事件更改为鼠标单击并移动c#_C#_Silverlight_Visual Studio 2012_Mouse - Fatal编程技术网

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

将按键移动事件更改为鼠标单击并移动c#,c#,silverlight,visual-studio-2012,mouse,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.

好的,到目前为止我有

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);
    }
太棒了,我可以上下左右移动我的物体。不过我想用我的资源光标来控制它。你知道我会怎么做吗。
我不擅长这一点,刚开始使用一些指针就可以了。

我怀疑您想覆盖UserControl的方法。然后可以查看从该处理程序获得的mouseeventarg,并使用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;
}
private Point prev;
私有void UserControl_OnMouseMove(对象发送方,MouseEventArgs e)
{
点p=e.GetPosition();
if(prev==null)
prev=p;
如果(同比>上一年)
此.销.移动(方向.向上);
如果出现其他情况(同比<上一年)
此。销。移动(方向。向下);
等
prev=p;
}

希望这对您有所帮助

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

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;
        }

这不是正确的逻辑…p.Y.怎么样,向任何方向移动谢谢你提供的信息,我会接受其中一个答案我只是通过他们两个试图理解他们并让他们工作。经过一些修改,这最终起到了作用,谢谢你的帮助。我知道这会起作用,因为我能读懂逻辑,非常感谢。我会接受答案,一旦我有了在我的程序工作的代码。