gpt4 book ai didi

c# - 使主窗口处于非事件状态的选项卡上的 WebBrowser 控件

转载 作者:太空宇宙 更新时间:2023-11-03 14:21:32 26 4
gpt4 key购买 nike

我有一个 Visual Studio 2008 .NET 2.0 WinForms 应用程序,它在其主 TabControl 的 TabPages 之一上包含一个 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.Select() 放在 FormMain_Shown() 中。

如果我在第 2 行添加回来,PDF 文件会正确加载——但在启动时,程序的主窗口处于非事件状态(标题栏获得“非事件窗口”颜色)。这不是焦点问题,但可能与 z 顺序有关。没有其他窗口遮挡主窗口,因为我刚刚从其桌面图标启动该程序,屏幕底部的任务栏按钮均未显示任何窗口处于事件状态。它正常启动,没有最小化或最大化。

顺便说一句,WebBrowser 控件所在的 TabPage 不是第一个选项卡。我只知道它可以正确加载 PDF 文件,因为这些行不会引发异常,当我单击该选项卡时,PDF 文件显示正常。此外,FWIW 我有最新的 IE 更新和 Adob​​e Reader X 版本。

我认为这可能是我的开发机器(带有一些 IDE 插件的 Windows 7 64 位旗舰版)的一些古怪之处,但运行标准 32 位 XP 的客户也报告了它。我在 7 和 Vista 中的 XP 虚拟机也显示相同的内容。一旦我禁用加载 URL,程序就会按预期作为事件窗口启动。

最佳答案

不幸的是,对于我过去遇到的完全相同的问题,我从未找到(非解决方法)解决方案。有一种方法可以防止 IE7 通过 ActiveX 窃取焦点(所以我读过),但我从未追求过。

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

我知道这不是最好的,但这是我的全部。

虽然这些看起来很有希望:

Prevent WebBrowser control from stealing focus?

http://www.pcreview.co.uk/forums/hidden-webbrowser-stealing-focus-t2616720.html

关于c# - 使主窗口处于非事件状态的选项卡上的 WebBrowser 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5226737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com