У меня есть приложение WinForms для Visual Studio 2008 .NET 2.0, которое содержит элемент управления WebBrowser на одной из страниц вкладок своего основного элемента управления TabControl. Этот 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 ().
Если я добавлю обратно в эту вторую строку, файл PDF загрузится правильно, но при запуске главное окно программы будет неактивным (строка заголовка будет окрашена в цвета «неактивного окна»). Это не проблема фокусировки, но может быть связана с z-порядком. Никакие другие окна не закрывают главное окно, так как я только что запустил программу с ее значка на рабочем столе, и ни одна из кнопок панели задач внизу экрана не показывает какое-либо окно как активное. Запускается нормально, без сворачивания и разворачивания.
Кстати, эта TabPage, где находится элемент управления WebBrowser, не первая вкладка. Я знаю только, что он правильно загружает файл PDF, потому что эти строки не вызывают исключения, и когда я нажимаю на эту вкладку, файл PDF отображается нормально. Также FWIW у меня есть последние обновления IE и версия Adobe Reader X.
Я подумал, что это может быть что-то необычное в моей машине для разработки (64-разрядная версия Windows 7 Ultimate с несколькими подключаемыми модулями IDE), но клиенты, использующие стандартную 32-разрядную версию XP, тоже сообщают об этом. Также мои виртуальные машины XP внутри 7 и Vista показывают то же самое. Как только я отключаю загрузку URL-адреса, программа запускается как активное окно, как и ожидалось.