メインのTabControlのTabPagesの1つにWebBrowserコントロールを含むVisual Studio 2008 .NET 2.0 WinFormsアプリがあります。この WebBrowser は、アプリケーションと共に配布される PDF ファイルを表示するためにのみ使用され、その WebBrowser コントロール自体を除いて、そのタブには他のコントロールはありません。
問題: プログラムの起動時に、アプリケーションのメイン ウィンドウがアクティブに設定されていません。アクティブになる前に、[Alt-Tab] でクリックまたは選択する必要があります。
FormMain_Load() から起動されたこれらの 2 行まで追跡しました。表示したい PDF ファイルへの完全修飾パスを作成し、File.Exists() を呼び出して、それが実際に存在する (存在する) ことを確認しました。
Uri uri1 = new Uri("path\\to\\filename.pdf");
webBrowser1.Url = uri1;
上記の 2 行目をコメント アウトすると、もちろん PDF ファイルは WebBrowser コントロールに読み込まれませんが、プログラムは正常に起動できます。メイン ウィンドウはアクティブです (タイトル バーは「アクティブ ウィンドウ」の色を取得します)。 TextBox.Select() を FormMain_Shown() に配置した最初のタブの最初のフィールドで、テキスト カーソルが点滅しています。
その 2 行目に追加すると、PDF ファイルは正しく読み込まれますが、起動時にプログラムのメイン ウィンドウが非アクティブになります (タイトル バーが「非アクティブ ウィンドウ」の色になります)。フォーカスの問題ではありませんが、z オーダーに関連している可能性があります。デスクトップアイコンからプログラムを起動したばかりで、画面の下部にあるタスクバーボタンのいずれもアクティブとしてウィンドウを表示しないため、他のウィンドウがメインウィンドウを覆い隠していません。最小化も最大化もされず、正常に起動します。
ところで、WebBrowser コントロールが存在するこの TabPage は最初のタブではありません。これらの行は例外をスローせず、そのタブをクリックするとPDFファイルが正常に表示されるため、PDFファイルが正しくロードされることしかわかりません。また、最新の IE アップデートと Adobe Reader X バージョンを入手しました。
これは私の開発マシン (Windows 7 64 ビット Ultimate といくつかの IDE プラグイン) の奇妙な点かもしれないと思っていましたが、標準の 32 ビット XP を実行している顧客からも報告されています。また、7 および Vista 内の XP 仮想マシンでも同じことが表示されます。URL の読み込みを無効にするとすぐに、プログラムはアクティブ ウィンドウとして起動します。