gpt4 book ai didi

WPF Thumb DragDelta 在显示器之间移动

转载 作者:行者123 更新时间:2023-12-02 12:40:50 25 4
gpt4 key购买 nike

我有一个弹出控件,我添加了一个拇指,这样我就可以将它拖动到屏幕上。拇指的 DragDelta 事件已重载:

private static void Thumb_DragDelta(object sender, DragDeltaEventArgs e)
{
Thumb thumb = (Thumb)sender;
Popup popup = thumb.Tag as Popup;

if (popup != null)
{
popup.HorizontalOffset += e.HorizontalChange;
popup.VerticalOffset += e.VerticalChange;
}
}

拖动工作完美(我使用了此处的拖动示例:http://www.codeproject.com/Articles/43636/WPF-A-search),除非弹出窗口到达显示器的末端并跨越到另一个显示器(双显示器设置)。例如,如果我在左显示器上打开弹出窗口并开始向右拖动它,当它的右边框接触显示器的边缘时,它的移动不稳定并开始四处移动,直到我进一步向右移动并显示在另一个显示器上监控。

我通过这个场景进行了调试,这是基本上发生的情况的数值示例:

At edge of screen:
HorizontalOffset = 600
HorizontalChange = 1

Move Right:
HorizontalOffset = 601
HorizontalChange = -800

HorizontalOffset = -199
HorizontalChange = 401

HorizontalOffset = 200
HorizontalChange = -150

当弹出窗口移动到另一个显示器时,这会产生奇怪的频闪效果;我需要做些什么才能让它在显示器之间顺利过渡吗?

最佳答案

我仍然不知道如何取消弹出窗口与屏幕的绑定(bind),但我能够通过使用 Window 控件来完成我需要的操作。我制作了 WindowStyle.None,这样就没有边框,并使用 DragMove() 方法的委托(delegate)重载了 MouseLeftButtonDown 事件,以便可以拖动它们屏幕周围。这使我能够获得与弹出窗口非常相似的外观和感觉,但能够在屏幕上拖动它而不闪烁。

关于WPF Thumb DragDelta 在显示器之间移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com