【发布时间】:2012-11-23 19:12:45
【问题描述】:
我有一个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;
}
【问题讨论】:
标签: c# wpf window mouseevent capture