新しい Window イベントを新しいタブにリダイレクトしようとしています:
myWebBrowser.NewWindow += add_NewTab;
//...
private void add_NewTab(object sender, CancelEventArgs e)
{
WebBrowser thisWebBrowser = (WebBrowser)sender;
e.Cancel = true; //should block the default browser to open a new window
TabPage addedTabPage = new TabPage("redirected tab"); //create a new tab
tabControl_webBrowsers.TabPages.Add(addedTabPage); //add the new tab to the TabControl
WebBrowser addedWebBrowser = new WebBrowser() //create the new web browser inside the new tab
{
Parent = addedTabPage,
Dock = DockStyle.Fill
};
addedWebBrowser.Navigate(thisWebBrowser.StatusText.ToString()); //set the new browser destination url
}
を使用することが、新しいウィンドウの URL を取得する最良の方法であるかどうかはWebBrowser.StatusText
わかりません (これは、テストしたすべてのサイトで機能するとは限りません)。
代わりに、新しいウィンドウの宛先を取得するために呼び出すより良いクラス/メソッドはありますか?
アップデート:
チャーリーが提案した解決策を試しました
- Microsoft Internet Control (COM) リファレンスを追加
- SHDocVw を使用して追加。
コードを使用しました:
System.Windows.Forms.WebBrowser myWebBrowser = new System.Windows.Forms.WebBrowser();
SHDocVw.WebBrowser axBrowser = (SHDocVw.WebBrowser)myWebBrowser.ActiveXInstance;
axBrowser.NewWindow3 += 新しい DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3);
残念ながらNullReference Exception
、修正できなかった 3 番目の行を受け取りました。
解決:
NewWindow2イベントを実装する方法を説明しているため(元の宛先URLを処理するNewWindow3の代わりに)、解決策が関連する回答にあるとは思わない(または見つけることができなかった)および実装は提案されているのと同じですここで NullReference Exception エラーが発生します。
とにかく、私はこの2つの投稿を発見しました:
前の 3 行を次のように変更することをお勧めします。
(myWebBrowser.ActiveXInstance as SHDocVw.WebBrowser).NewWindow3 += new SHDocVw.DWebBrowserEvents2_NewWindow3EventHandler(Browser_NewWindow3);
System.Windows.Forms.WebBrowser
現在、すべてが機能しており、残りのすべてのコードでオリジナルを使用し続けることができました。