当前位置 : 主页 > 编程语言 > c语言 >

c# – 关于应用程序没有在XP / W2K3中获得焦点的问题

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个用.NET编写的应用程序.以前的版本没有问题:双击图标或从命令行运行它,当它启动时,它是主窗口并具有您期望的焦点. 最新版本在主窗口之前显示一个启动画面,现在启动画面到
我有一个用.NET编写的应用程序.以前的版本没有问题:双击图标或从命令行运行它,当它启动时,它是主窗口并具有您期望的焦点.

最新版本在主窗口之前显示一个启动画面,现在启动画面到达前景,但主画面并不总是在主窗口结束.有时确实如此,有时却没有. (从命令行启动时,它总是不会).当主窗口未到达前景并获得焦点时,任务栏图标显示为稳定的橙色.

我在网上看到很多关于MS如何添加一个工具以防止应用程序从其他人那里窃取焦点,以ForegroundLockTimeout注册表设置和相关设置为中心,但上面描述的不同版本的行为发生在同一台机器上.

在最终创建时,我尝试在主窗体中调用Activate,以及SetForegroundWindow,都无济于事.

任何帮助表示赞赏.

您可能应该将启动画面设置焦点设置为主应用程序窗口,因为它将消失.

至于Window知道您的启动画面是您的应用程序,因为它是在该过程开始后显示的第一个顶层窗口.因此,该窗口获得焦点,但任何试图抓住同一个应用程序启动(图标点击/运行命令)的其他窗口被认为是一个焦点小偷.

您可以通过让Window认为有权将焦点转移到新窗口的窗口来解决这个问题.

因此,在飞溅被破坏之前,你应该在主窗口上溅起SetFocus.如果你破坏焦点窗口,那么焦点就无处可去,这可能是您应用中当前正在发生的事情.

网友评论