WPF ShowDialog单击所有者窗口事件

问题描述 投票:-2回答:1

我的英文不是很好,希望你能帮我回答这个问题,快点,WPF当ShowDialog()时,点击其他父窗体触发的事件可以捕获吗?

例如,单击父窗口的系统自己的MessageBox将具有闪烁动画。

我想抓住这个活动,谢谢

c# wpf xaml
1个回答
0
投票

首先,无论你的目标是什么,它都可能以不同的方式达成。我真的鼓励你采取几个步骤,三思而后行尝试从实际做你所要求的方面来解决问题。

至于你的问题,你在WPF中没有这样的事件。有一个答案,但没有简单的方法。你必须猜测并进入低级别。猜测将取决于它运行的Windows版本。

无论如何,您需要检查所有者表单接收的窗口消息的顺序。在Windows 8.1中,所有者形式接收WM_WINDOWPOSCHANGING,其中lParam指向structure,其flags至少为0x13 : SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOSIZE

当然,要获取此信息,您需要首先覆盖窗口的WindowProc,这在WPF中是一个单独的乐趣。此外,参数的组合也可能在其他情况下发生,因此您必须确保以某种方式跟踪您打开模态对话框,以便这种窗口消息实际上意味着尝试激活所有者窗口。

它是低级别的Windows管理,因此您可以完成所有操作。但我真的建议你在朝这个方向前多想几次。

© www.soinside.com 2019 - 2024. All rights reserved.