用户完成窗口移动后运行代码?

时间:2015-04-24 09:50:49

标签: c# wpf

我已经制作了一个WPF应用程序,我的一个窗口需要全屏显示,但是我试图获取它以便如果用户将窗口拖动到另一个监视器,它将自动调整大小以适应那个监视器。

我已经尝试过预览鼠标向上事件,向上鼠标按下事件以设置窗口被拖动的bool以防止代码执行,但这似乎不起作用且窗口仍在尝试在被拖动并且鼠标停止时调整自身大小(就好像mousedown被设置为false)

调整窗口大小的代码位于窗口中已更改的事件

在执行代码调整大小以适应之前,是否有其他方法可以有效地检测到鼠标已关闭并将窗口拖动到另一个监视器?

当用户拖动窗口时,我不希望代码调整大小以便执行,一旦用户完成拖动窗口,就应该执行将窗口调整大小到新屏幕的代码。

目前我无法在窗口完成移动后运行代码。 经过进一步调查,在标题边框上释放鼠标后,不会触发鼠标注册事件。

3 个答案:

答案 0 :(得分:0)

您可以为任何UI元素覆盖OnPreviewMouseMove。

protected override void OnPreviewMouseMove(MouseEventArgs e)

然后使用该处理程序的事件args(类型为MouseEventArgs) - 检查是否按下了鼠标左键(表示拖动)。

e.LeftButton == MouseButtonState.Pressed

答案 1 :(得分:0)

当您开始拖动最大化的窗口时,大小会更改。这就是Windows的行为方式,对用户来说也很自然。在拖动结束时,您可以将状态设置回最大化。

Application.Current.MainWindow.WindowState = WindowState.Maximized;

答案 2 :(得分:0)