1321853269 VB.NETでNewWindowを使用した場合、FlashのURLリンクに関する質問です。

以下のコードを追加したとき、

Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
Dim NewURL As String = CType(sender, WebBrowser).StatusText
Dim frmNew As New Form2
frmNew.WebBrowser1.Navigate(NewURL)
'frmNew.WebBrowser1.Url = New Uri(NewURL)
frmNew.Show()
e.Cancel = True
End Sub

Form2のWebBrowser1に新しいウィンドウとして表示することはできたのですが、
この場合、Flashのリンク動作が正しく作動せず、
例えば「http://完了/」や「about:blank」となってエラーになってしまいます。

これは、どうしようもないことなのでしょうか。
対策できるようであれば、その方法をご教授お願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/11/28 14:30:05

回答1件)

id:rsc96074 No.1

回答回数4503ベストアンサー獲得回数437

 こんな感じでどうでしょうか。

Private Sub WebBrowser1_NewWindow(
	ByVal sender As Object,
	ByVal e As System.ComponentModel.CancelEventArgs
) Handles WebBrowser1.NewWindow

	Dim NewURL As String = CType(sender, WebBrowser).StatusText
	If NewURL = "http://完了/" Then	' 例外処理
		' 何もしない
	ElseIf NewURL <> "" Then	'リンク先を取得できたら
		e.Cancel = True		'ie 呼び出しをキャンセルする
		Dim frmNew As New Form2
		frmNew.WebBrowser1.Navigate(NewURL)
		frmNew.Show()
	Else
		' 何もしない
	End If
End Sub
id:hokuto0127

やはり無理ではありましたが、しょうがないものと見ます。
ご迷惑おかけしましてすみません。有難うございました。

2011/11/24 12:35:56
  • id:rsc96074
     私が紹介した方法は、簡単なんですが、完璧じゃないんですね。ときどき、飛べないのがあります。(^_^;
     自分で使うため用だったので、面倒より簡単にということで、出来ないときは、次のようにieを呼ぶようにしました。

    Dim NewURL As String = CType(sender, WebBrowser).StatusText
    If NewURL <> "" Then 'リンク先を取得できたら
    e.Cancel = True 'ie 呼び出しをキャンセルする
    Dim frmNew As New Form2
    frmNew.Show()
    Else 'リンク先を取得できなかったら、
    'そのまま ie を呼ぶ
    End If
  • id:hokuto0127
    「about:blank」となる部分には対応できたのですが、「http://完了/」には対応できませんね・・。
    特定のURLのときだけIEで起動するように設定することはできませんか?
  • id:rsc96074
    if NewURL="http://完了/" then
    '何もしない
    else if NewURL<>"" then
    '上の処理
    else
    '何もしない
    EndIf
    とすればいいかも。(^_^;
    e.Cancel=Trueとしなけらば、そのまま、ieを呼ふはず。
  • id:hokuto0127
    Private Sub WebBrowser1_NewWindow(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles WebBrowser1.NewWindow
    Dim NewURL As String = CType(sender, WebBrowser).StatusText
    If NewURL <> "" Then
    Dim frmNew As New Form2
    frmNew.WebBrowser1.Navigate(NewURL)
    frmNew.Show()
    Else
    End If
    If NewURL = "http://完了/" Then
    ElseIf NewURL <> "" Then
    Else
    End If
    End Sub

    上記のようにコードを変えてみましたが、Form2とIEが両方開いてしまうようになりまして・・・。
    記述の仕方が悪いんですかね?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません