none
newwindow RRS feed

  • 質問

  • こんんちは。
    今回はwebbrowserのnewwindowでご質問です。

    webbrowserから新しいウィンドウが開かれるときもieではなく、webbrowserで開くようにしたいと思っています。

    newwindowイベントでe.cancel=trueにしたうえで、webbrowserで開こうとしたのですが、urlが拾えずにうまくいきません。

    今まではnewwindow,newwindow2,3とあり、どれかで開くブラウザも指定できたようなのですが、2005ではそういう実装はできないのでしょうか?

    よろしくお願いいたします。

    2006年7月21日 3:31

すべての返信

  • わたしも同様の悩みをもったことがあり,そのときに作ったサンプルをWebページにまとめておきました。

    よろしかったら参考にしてください。

    http://homepage1.nifty.com/yasunari/VB/VB2005/WebBrowserNewWindow2Event.htm

    2006年7月21日 6:18
  • YAS.sさん

    ありがとうございます。
    参考になりました。

    NewWindow2の部分を

       WebBrowser1 = New ExWebBrowser

            Dim Browser1 As New Browser '独自フォーム
            Browser1 = New Browser
            Me.WebBrowser1.Dock = DockStyle.Fill
            Browser1.Controls.Add(WebBrowser1)
            Browser1.Visible = True

            e.ppDisp = Me.WebBrowser1.Application
            Me.WebBrowser1.RegisterAsBrowser = True

    とすることで別ウィンドウで開けました。

    ただ、これだと、元ウィンドウでNavigatingイベントを拾って処理をしていたのですが、
    それが新しいウィンドウに移ってしまい、元のウィンドウで拾えなくなってしましました。。。
    一難去ってまた一難です。もう少し考えてみます。

    ※関係ないですが、せっかくこういう処理を入れて、右クリックメニューを出さなくしても、
     リンクを右ダブルクリックをすると IEが開いてしまうのですね。バグでしょうかね(笑)

     

    2006年7月21日 14:35
  • >ただ、これだと、元ウィンドウでNavigatingイベントを拾って処理をしていたのですが、
    >それが新しいウィンドウに移ってしまい、元のウィンドウで拾えなくなってしましました。。。
    >一難去ってまた一難です。もう少し考えてみます。

    AddHandlerで「新しいウィンドウ」のイベントを「元のウィンドウ」のコードに関連付ければよいのでは?

    右のダブルクリックで別のIEが開くのはどうも防ぎようがないようですね。

    タイマーで新しいIEが開くのを監視して,新しいIEが開いた瞬間にIEを閉じて自分の用意したWebBrowserコントロールに表示しなおすくらいしか方法が思いつきません。(でもそうするとIEで開きたいときに開けなくなってしまうかも)

    2006年7月21日 14:56