2012-02-17 16 views
1

Navigatingイベントのハンドラで、WebBrowserコントロールがナビゲートしているUriを変更することは可能ですか?それが読み取り専用であるため、イベント引数でWebBrowserでUriを変更します.Navigating

ウリは、変更することはできません、しかし、私は、ナビゲーションをキャンセルし、このようなNavigateメソッドで新しいアドレスにブラウザを送信しようとした:

// I can not do this. 
// e.Uri = new Uri("http://newUri"); 

e.Cancel = true; 
((WebBrowser)sender).Navigate(new Uri("http://newUri")); 
しかし

これは私のアプリケーションが何も例外なくクラッシュするようにします。

誰でもこの問題の解決策を知っていますか?

+1

'Navigate'メソッドを' Dispatcher'ブロックに入れてみることができますか? – Ku6opr

+0

私は試しましたが、助けにはなりませんでした。 –

答えて

0

は、それはそれを判明しましたこれはエミュレータのバグです。私のアプローチは、エミュレータがクラッシュしているアプリケーションを実行させますが、実際のデバイスでは正しく動作します。

1

私はあなたがスタックのオーバーフローを引き起こしていると推測しています。たびに、あなたのコード再帰を停止するブール値を追加するナビゲーションイベントが発生、再度イベントを発生させている、再び移動するには、ブラウザを教えて...

てみてください...

private bool isRedirecting = false; 

private void WebBrowser_OnNavigate(object sender, EventArgs e) 
{ 
    if (isRedirecting) 
    return; 

    e.Cancel = true; 

    isRedirecting = true; 
    ((WebBrowser)sender).Navigate(new Uri("http://newUri")); 
    isRedirecting = false; 
} 
+0

私はコードのその部分を見せていませんでしたが、私はすでに条件をチェックしています、これはイベントの最初の発生時にのみ真です。デバッグしようとしましたが、Navigatingイベントは一度だけ起動されます。 –

関連する問題