使用鼠标移动具有自定义边框的窗口
本文关键字:自定义 边框 窗口 鼠标 移动 | 更新日期: 2023-09-27 17:57:07
我正在使用WPF处理一个C#项目。在我的 MainWindow 中,我刚刚摆脱了默认的窗口边框,并使用 png 文件制作了自己的边框。我只是将其设置为主窗口的背景。现在我做了一些有点棘手的方法来让我的窗口移动:
private void Window_MouseDown(object sender, MouseButtonEventArgs e) {
mouseDown = true;
lastX = (int)e.GetPosition(this).X;
lastY = (int)e.GetPosition(this).Y;
}
private void Window_MouseUp(object sender, MouseButtonEventArgs e) {
mouseDown = false;
}
private void Window_MouseMove(object sender, MouseEventArgs e) {
if (mouseDown) {
int xDiff = (int)e.GetPosition(this).X - lastX;
int yDiff = (int)e.GetPosition(this).Y - lastY;
this.Left += xDiff;
this.Top += yDiff;
}
}
private void Window_MouseLeave(object sender, MouseEventArgs e) {
mouseDown = false;
}
现在这并不能真正正常工作。这样,用户可以在所有空白处移动窗口,即使在标签和文本块上也是如此。有没有办法给这类事件的背景或边界?还是有更好的方法来整合边界?
提前感谢!
正如您所说,手动完成时行为不稳定,但有一个解决方法。
这是框架中专门用于执行此操作的方法:
http://msdn.microsoft.com/en-us/library/system.windows.window.dragmove(v=vs.110).aspx