微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何捕获(WPF)窗口之外发生的鼠标事件?

我有一个WindowStyle =“None”和AllowTransparency =“True”的Window元素,因此它没有标题栏并支持透明度.

我希望用户能够通过左键单击窗口中的任意位置并拖动窗口将窗口移动到屏幕上的任何位置.只要按下鼠标左键,窗口就会随鼠标拖动.

我能够得到这个功能一个例外:当鼠标移动到窗口外面(例如当鼠标左键靠近窗口边缘并且鼠标被移动时),窗口不再捕捉鼠标位置,并且不会随鼠标拖动.

以下是我用来完成工作的代码隐藏代码

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;
}

解决方法

我相信你正在重塑轮子.搜索“Window.DragMove”.

例:

private void title_MouseLeftButtonDown(object sender,MouseButtonEventArgs e)
    {
        this.DragMove();
    }

原文地址:https://www.jb51.cc/csharp/92238.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐