C# 选项卡上的WebBrowser控件使主窗口处于非活动状态

C# 选项卡上的WebBrowser控件使主窗口处于非活动状态,c#,winforms,pdf,browser,active-window,C#,Winforms,Pdf,Browser,Active Window,我有一个VisualStudio2008.NET2.0WinForms应用程序,它在主选项卡控件的一个选项卡页上包含一个WebBrowser控件。此WebBrowser仅用于显示随应用程序分发的PDF文件,该选项卡上除了WebBrowser控件本身之外没有其他控件 问题是:在程序启动时,应用程序的主窗口未设置为活动状态。在激活之前,必须通过[Alt Tab]单击或选择它 我一直追踪到这两条线,从FormMain_Load发射。我已经为要显示的PDF文件形成了一个完全限定的路径,并称为file.E

我有一个VisualStudio2008.NET2.0WinForms应用程序,它在主选项卡控件的一个选项卡页上包含一个WebBrowser控件。此WebBrowser仅用于显示随应用程序分发的PDF文件,该选项卡上除了WebBrowser控件本身之外没有其他控件

问题是:在程序启动时,应用程序的主窗口未设置为活动状态。在激活之前,必须通过[Alt Tab]单击或选择它

我一直追踪到这两条线,从FormMain_Load发射。我已经为要显示的PDF文件形成了一个完全限定的路径,并称为file.Exists,以确保它确实存在,并且它是:

Uri uri1 = new Uri("path\\to\\filename.pdf");
webBrowser1.Url = uri1;
如果我注释掉上面的第二行,当然它不会将PDF文件加载到WebBrowser控件中,但是程序可以正常启动-它的主窗口处于活动状态标题栏获取活动窗口的颜色,文本光标在第一个选项卡上的第一个字段中闪烁,我将其与TextBox一起放置。在FormMain\u中选择,如图所示

如果我在第二行加回去,PDF文件会正确加载,但是在启动时,程序的主窗口是非活动的,标题栏会显示非活动的窗口颜色。这不是焦点问题,但可能与z顺序有关。没有其他窗口遮住主窗口,因为我刚刚从桌面图标启动了程序,屏幕底部的任务栏按钮也没有显示任何活动窗口。它正常启动,而不是最小化或最大化

顺便说一句,WebBrowser控件所在的选项卡页不是第一个选项卡。我只知道它正确加载了PDF文件,因为这些行不会引发异常,当我单击该选项卡时,PDF文件显示良好。另外,我已经得到了最新的IE更新和AdobeReaderX版本


我认为这可能是我的开发机器Windows 7 64位Ultimate的一些古怪之处,它带有一些IDE插件,但运行标准32位XP的客户也报告了这一点。我的XP虚拟机7和Vista也显示了同样的情况。一旦我禁用加载URL,程序就会像预期的那样启动为活动窗口。

不幸的是,我从未找到一个非变通解决方案来解决我过去遇到的完全相同的问题。有一种方法可以防止IE7通过ActiveX窃取焦点,我已经读过了,但我从来没有这样做过

我最后做的是在TabControl的OnSelectedIndexChanged事件中将.pdf加载到WebBrowser控件中,以便在用户实际输入WebBrowser控件所在的选项卡之前不会窃取焦点

我知道这不是最好的,但这是我所有的

但这些措施看起来很有希望:


谢谢你。我在谷歌搜索中看到了这些页面,但它们并没有完全解决我的特定问题。第一个是关于阻止我试图创造的行为——但愿我有他的问题!第二个问题似乎是讨论在导航到网页之前和之后保存和恢复焦点。但是,我将检查父窗体的Deactivate事件以及WebBrowser的一些事件。谢谢Adobe Reader劫持IE窗口的方式是一个非常丰富的bug来源。Windows激活、焦点、鼠标滚轮都是问题点。他们只是不知道如何让它毫无问题地工作,而且永远不会正确。如果你关心长期的心理健康,就直接开始阅读。