繁体   English   中英

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

[英]change key move event to mouse click and move c#

好到目前为止我有

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光标来控制它。 任何想法我会怎么做。 我不擅长这个,刚刚开始做一些指针。

我怀疑你想要覆盖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;
}

希望这可以帮助

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM