WPF の WebBrowser コントロールに表示されている HTML のリンク(target= “_blank” が付いているもの)をユーザーがクリックすると、システムのデフォルトのブラウザがガン無視されて、常に IE で開かれてしまいます。(なんという仕様でありましょうか)
Forms の WebBrowser コントロールの場合であれば十分な量の対策がネット検索で見つかるようですが、WPF の情報は少ないようですね。
WPF の WebBrowser コントロールに表示されている HTML のリンクをクリックしたときに、システムのデフォルトのブラウザで開かれるようにするには次のようにします。
1. HTML のリンクから target=”_blank” を取り除きます(既存の HTML を使用するときは、WebBrowser コントロールに読み込む時に取り除けば良いでしょう)。
2. WebBrowser コントロールの Navigating イベントを次のようにします。
Dim bFirstNavigatingDone As Boolean = False Private Sub body_Navigating(sender As Object, e As NavigatingCancelEventArgs) Handles body.Navigating If bFirstNavigatingDone = False Then '最初のページは読み込ませるだけ。 bFirstNavigatingDone = True Return End If 'ページ上のリンクがクリックされたら .Navigating イベントをキャンセル。 e.Cancel = True 'デフォルトのブラウザでリンクを開く。 System.Diagnostics.Process.Start(e.Uri.ToString) End Sub
リンクに target=”_blank” が付いていると Navigating イベントが呼ばれずに IE で開かれてしまうので注意してください。