gpt4 book ai didi

c# - 窗口句柄单击事件

转载 作者:行者123 更新时间:2023-11-30 12:11:01 25 4
gpt4 key购买 nike

在处理 WPF 的 WPF SizeChanged 事件时,我正试图跳过一些障碍。我有一些自定义代码,我需要在用户完成调整窗口大小后执行,不幸的是,我没有遇到任何事件,所以我创建了一个使用 Reactive Extensions 来节流的解决方案SizeChange 事件:

IObservable<SizeChangedEventArgs> ObservableSizeChanges = Observable
.FromEventPattern<SizeChangedEventArgs>(this, "SizeChanged")
.Select(x => x.EventArgs)
.Throttle(TimeSpan.FromMilliseconds(200));

IDisposable SizeChangedSubscription = ObservableSizeChanges
.ObserveOn(SynchronizationContext.Current)
.Subscribe(x => {
Size_Changed(x);
});

基本上,它所做的是确保在调用我的自定义代码之前必须经过 200 毫秒的无 SizeChanged 事件。这工作正常但是我遇到了一个问题,如果用户将窗口句柄拖出并继续按住鼠标按钮,代码仍然会被执行。我希望能够确保自定义代码不能在鼠标按钮按下时执行。我尝试插入 PreviewMouseLeftButtonDown 但它不会在单击窗口句柄时触发,只有在窗口框架内单击鼠标时才会触发。对于适用于窗口句柄的鼠标按下,我可以插入任何类似的事件吗?或者谁能​​想到适合我遇到的问题的解决方法?

最佳答案

Windows 发送一个专门的消息来通知窗口模态大小/移动循环已经退出。 WM_EXITSIZEMOVE,当用户松开鼠标按钮或按下 Escape 键时触发。但是,是的,WPF 不会公开它。谷歌“wpf wm_exitsizemove”找到你想要的互操作代码。一个好看的命中是this blog post

关于c# - 窗口句柄单击事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422917/

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