WinForm ATL + TAB 切换应用程序 窗体丢失焦点的问题

让爱延续 2012-05-29 10:59:55
使用 ALT + TAB 切换应用程序, 当使用 ALT + TAB 再切换回来时窗体内的控件【WebBrowser 编辑模式下的】的焦点丢失, 再次切换 WebBrowser 又可以自动获得焦点。

间隔性的,中间总有一次 WebBrowser 无法自动获得焦点,而下一次又可以自动获得。

怎样可以做到:每一次切换回来时,WebBrowser 都可以自动获得焦点?

...全文
444 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
让爱延续 2013-08-27
  • 打赏
  • 举报
回复
唉, 啥时候的帖子啊,都忘了结啦
yuhai_008 2013-08-06
  • 打赏
  • 举报
回复
碰到相同问题,求解
让爱延续 2012-06-12
  • 打赏
  • 举报
回复
真无语... 难道这样的问题没有人遇到过吗?
让爱延续 2012-05-31
  • 打赏
  • 举报
回复
求帮忙啊...
ParanoidKing 2012-05-30
  • 打赏
  • 举报
回复
单击任务栏图标不会先触发Activated,再触发 Deactivate吧。你在Actived那里打断点调试的话会这样,因为当前活动窗口要切换到Visual Studio。正常运行的话是不会的。我在xp下试的。
让爱延续 2012-05-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

单击任务栏图标不会先触发Activated,再触发 Deactivate吧。你在Actived那里打断点调试的话会这样,因为当前活动窗口要切换到Visual Studio。正常运行的话是不会的。我在xp下试的。
[/Quote]

不要用断点, 用Console.Write输出标记。
反复多试几次就会出现。


帖子别沉啊......

让爱延续 2012-05-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

C# code

this.Activated += new EventHandler((sender, e) =>
{
if (webBrowser1.Document != null)
{
webBrowser1.Document.Focus();
}
});


不过这样的话不管切出去之前有没有焦点,切回来之后都会获得焦点。
[/Quote]

Activated 有个最大的弊端,触发的时机不准确。
在单击任务栏图标时、会先触发Activated 再触发 Deactivate事件(win7下,xp不知道是不是也是这样),
在这样的情况下单击任务栏.. webBrowser会获得焦点, webBrowser获得焦点后,其所在窗体又会自动激活,窗体不能最小化。


// webBrowser1 获得焦点 应该用body的 Focus();
if (webBrowser1.Document != null)
{
webBrowser1.Document.Focus();
}


哪位大侠来帮我一下啊,我快疯了...


婆婆 2012-05-29
  • 打赏
  • 举报
回复
楼上正解
ParanoidKing 2012-05-29
  • 打赏
  • 举报
回复

this.Activated += new EventHandler((sender, e) =>
{
if (webBrowser1.Document != null)
{
webBrowser1.Document.Focus();
}
});

不过这样的话不管切出去之前有没有焦点,切回来之后都会获得焦点。

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧