我有一个Window
元素,它的WindowStyle="None"
和AllowsTransparency="True"
,因此它没有标题栏且支持透明度。
我希望用户可以通过在窗口内部任何位置左键单击并拖动来将窗口移动到屏幕上的任意位置。只要按下左键不松开,窗口就会随着鼠标一起移动。
我已经实现了这个功能,但有一个例外:当鼠标移动到窗口外部时(例如当左键单击靠近窗口边缘并快速移动鼠标时),窗口不再捕获鼠标位置,也不再随着鼠标一起移动。
以下是我用于完成任务的后台代码:
public Point MouseDownPosition { get; set; }
public Point MousePosition { get; set; }
public bool MouseIsDown { get; set; }
private void window_MyWindowName_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MouseDownPosition = e.GetPosition(null);
MouseIsDown = true;
}
private void window_MyWindowName_MouseMove(object sender, MouseEventArgs e)
{
if (MouseIsDown)
{
MousePosition = e.GetPosition(null);
Left += MousePosition.X - MouseDownPosition.X;
Top += MousePosition.Y - MouseDownPosition.Y;
}
}
private void window_MyWindowName_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
MouseIsDown = false;
}