gpt4 book ai didi

c# - 带有 Win32 父窗口的 WPF OpenFileDialog;窗口在关闭时没有重新获得焦点

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

我有一个调用 c++/cli 库的 c++ Windows 应用程序,它正在调用托管库。托管库使用 Win32 窗口拥有的 WPF 窗口父级调用 OpenFileDialog.Show。我还没有找到更好的方法来做到这一点,我在这里阅读并搜索 google 和 social.msdn 的所有资源都推荐做我正在做的事情。

对话框打开得很好,但是当我点击取消按钮时,例如,应用程序完全失去了焦点。我不确定为什么会这样,但我似乎无法让它停止。我尝试了很多不同的方法都无济于事。

如果我只是启动 OpenFileDialog 而不创建 WPF 窗口,我看不到问题。如果我不设置 WPF 窗口的所有者,我看不到问题。如果我调用 OpenFileDialog.Show 并且不传递父级,但仍然创建 WPF 窗口并设置其所有者,我仍然会看到问题。

我可以破解它以在它失去焦点后将父应用程序窗口设置为前景,但我希望不必这样做。

我已经为我的场景上传了一个小示例解决方案来说明问题:

http://dl.dropbox.com/u/26054523/MixedExample.zip

如有任何帮助,我们将不胜感激。

最佳答案

您是否尝试过反转托管场景?现在听起来你正在去 unmanaged->bridge->managed->WPF->Winforms。也许你可以去 ...managed->WinForms->WPF using ElementHost http://msdn.microsoft.com/en-us/library/ms742215.aspx

这样一来,WPF 窗口将只是 WinForms 应用程序的子控件,并且对于焦点切换可能更有效。 WinForms 控件并不是真的意味着可以很好地直接与 WPF 应用程序一起工作,正如您所指出的那样,正在使用两种不同的 UI 线程设置。

关于c# - 带有 Win32 父窗口的 WPF OpenFileDialog;窗口在关闭时没有重新获得焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5638965/

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