Webブラウザー制御は、デフォルトでは、リンクがクリックされている間はデフォルトのブラウザーを開かず、InternetExplorerでのみブラウザー内でクリックされたリンクを開きます。これで_DocumentCompletedイベントを使用できますが、機能するには、リンクボタンなどのイベントベースのトリガーが必要です。ここで問題となるのは、ブラウザコントロールのhtmlにhrefがある場合、これも機能しないということです。これに対する解決策は、_NewWindowイベントを使用することです。コードを以下に示します
/* The event handler*/
private void webBrowser1_NewWindow(object sender, CancelEventArgs e)
{
var webbrowser = (WebBrowser)sender;
e.Cancel = true;
OpenWebsite(webbrowser.StatusText.ToString());
webbrowser = null;
}
/* The function call*/
public static void OpenWebsite(string url)
{
Process.Start(GetDefaultBrowserPath(), url);
}
private static string GetDefaultBrowserPath()
{
string key = @"http\shell\open\command";
RegistryKey registryKey =
Registry.ClassesRoot.OpenSubKey(key, false);
return ((string)registryKey.GetValue(null, null)).Split('"')[1];
}
改善のための提案を募集しています。ハッピーコーディング。