将按键移动事件更改为鼠标单击并移动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.怎么样,向任何方向移动谢谢你提供的信息,我会接受其中一个答案我只是通过他们两个试图理解他们并让他们工作。经过一些修改,这最终起到了作用,谢谢你的帮助。我知道这会起作用,因为我能读懂逻辑,非常感谢。我会接受答案,一旦我有了在我的程序工作的代码。