我希望显示一个
我已经尝试了多种不同方法来解决这个问题,包括重新启用任何其他顶层窗口(使用 Win32 的
我可以通过在显示
MessageBox
,它对单个窗体是模态的,并允许线程上的其他顶层窗口保持活动状态。WinForms会禁用当前线程上的所有窗口,无论是显示自定义模态窗体还是使用 MessageBox
类。我已经尝试了多种不同方法来解决这个问题,包括重新启用任何其他顶层窗口(使用 Win32 的
EnableWindow
函数)和调用本机的 MessageBox
函数。这些方法都有效,但会使键盘快捷键失效,包括用于在控件之间移动的 Tab 键、用于取消打开菜单的 Escape 键以及最重要的菜单快捷键。我可以通过在显示
MessageBox
时安装键盘钩子,然后直接在活动窗体上调用 ProcessCmdKey
来使菜单快捷键起作用,但其他键盘快捷键仍不能正常工作。我猜我可以继续添加更多的 hack 以使这些其他情况工作,但我想知道是否有更好的方法。
注意: 这不是关于 非自动阻止,而是关于不禁用当前线程上的所有窗口。解决方案可能类似,但并非完全相同。