多くのリンクとデータを含む Web ブラウザー コントロールがあります。これらのデータはすべて Web サービスから取得されます。
最初の Web ブラウザー リンクをクリックしたときに、別の Web ブラウザー コントロールを開きたいと思います。どのようにそれを行うことができますか?
私の最初のウェブブラウザコードは次のとおりです。
webBrowser1.NavigateToString(htmlCode);
多くのリンクとデータを含む Web ブラウザー コントロールがあります。これらのデータはすべて Web サービスから取得されます。
最初の Web ブラウザー リンクをクリックしたときに、別の Web ブラウザー コントロールを開きたいと思います。どのようにそれを行うことができますか?
私の最初のウェブブラウザコードは次のとおりです。
webBrowser1.NavigateToString(htmlCode);
webBrowser1の下に別のwebBrowserを非表示にすることができます。それを呼びましょうwebBrowser2
。これで、ユーザーがwebBrowser1のリンクにアクセスしたときに、それをキャプチャして文字列を作成しますlink
。link
これで、を使用してに移動できますwebBrowser2.Navigate(new Uri(link,UriKind.Absolute));
。webBrowser1を非表示にし、webBrowser2を表示することを忘れないでください。
私があなたを理解していれば、最初の WB コントロール (これを WB1 と呼びます) で onClick イベントをインターセプトし、別の WB コントロール (これを WB2 と呼びます) で (ハイパーリンクがクリックされたときに) そのページを開きたいですか?
これを行う方法はいくつかありますが、このリンクは新しいウィンドウで開くように設定されていますか? その場合、NewWindow2 イベントが WB1 であることをインターセプトし、WB1 の NewWindow2 イベントで次のコードを実行できます... Set pDisp = WB2.object
(pDisp ではなく ppDisp の場合もありますが、イベントが自動生成されたときに表示されます。引数リストに表示されるオブジェクト名を選択してください)。
それ以外の場合は、WB1 イベントの BeforeNavigate2 イベント中にこのリクエストをインターセプトし、関心のあるリンクであるかどうか URL プロパティを確認し、そうである場合は、現在のリクエストをキャンセルして、以下のように新しいリクエストを再発行します... ( WB1 BN2 イベント)... Cancel = True ' これはリクエスト WB2.Navigate2 URL をキャンセルします, , "YourWB2sDocumentNameOrTargetFrameNameGoesHere"
コードの 2 行目は、要求を再発行するだけです。
もちろん、YourWB2sDocumentNameOrTargetFrameNameGoesHere は TargetFrameName (または WB2 コントロール/ウィンドウ内の最上位ドキュメント、または任意の iframe のフレームまたはドキュメント名) です。これは通常、BODY タグの name= プロパティにあります。 WB2 の最上位ドキュメントを親にします。これを行うだけです... Cancel = True WB2.Navigate2 URL
WB2 を参照することで、WB1 リクエストをキャンセルした後、同じ URL リクエストを WB2 ウィンドウに送信するだけです。
さらに助けが必要な場合はお知らせください。