这是我必须拖动窗口的代码。它有点工作!有点......
Private Point startPoint;
private void Window_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
startPoint = e.GetPosition(null);
}
private void Window_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
Point relative = e.GetPosition(null);
Point AbsolutePos = new Point(relative.X + this.Left, relative.Y + this.Top);
this.Top = AbsolutePos.Y - startPoint.Y;
this.Left = AbsolutePos.X - startPoint.X;
}
}
问题是如果我移动鼠标太快,它会离开窗口并停止提升movemouse事件。其次,拖动窗口根本不平滑,这让我觉得我没有以正确的方式做到这一点。第三,我在Window_MouseLeftButtonDown上尝试了这个,它会在每次点击鼠标时触发一次事件。 我是初学者,一个简单的例子,没有Dropping和数据传输,我和其他很多像我这样的初学者都会感激。感谢Stack OverFlow用户愿意提供帮助。
答案 0 :(得分:2)
解决方案实际上比您想象的要简单。放置这一行
MouseDown += delegate { DragMove(); };
在你的构造函数中,你很高兴:)
答案 1 :(得分:0)
丢失鼠标是因为未能捕获鼠标。标准程序是:
就性能而言,你是以正确的方式进行的。速度受限于窗口本身的重新绘制以及窗口经过的任何窗口以及计算机的速度以及拖动计算机时计算机上发生的其他情况。