【VB.NET】【WPF】WebBrowser 上のリンクをデフォルトのブラウザで開く

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 で開かれてしまうので注意してください。

 

購読する
通知を受け取る対象
guest
0 Comments
Inline Feedbacks
View all comments