加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:32:28 所属栏目:百科 来源:网络整理
导读:我有一个用.NET编写的应用程序.以前的版本没有问题:双击图标或从命令行运行它,当它启动时,它是主窗口并具有您期望的焦点. 最新版本在主窗口之前显示一个启动画面,现在启动画面到达前景,但主画面并不总是在主窗口结束.有时确实如此,有时却没有. (从命令行启
我有一个用.NET编写的应用程序.以前的版本没有问题:双击图标或从命令行运行它,当它启动时,它是主窗口并具有您期望的焦点.

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

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

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

任何帮助表示赞赏.

解决方法

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读