2011-07-20 14 views
1

ウィンドウにWPF System.Windows.Controls.WebBrowserコントロールがあります。ユーザは、情報を入力し、WebBrowserによって表示されるウェブページに提出ボタンを押すことができる。ページがポストバックした後、スクリプトオブジェクトを使用してアプリケーションと通信します。送信ボタンが一度押されると、フォームは閉じず、Webページがポストバックするのを待って停止することを確認する必要があります。 "IsLoading"のようなプロパティを使ってWebBrowserやそのドキュメントの状態をチェックし、読み込み中のアクションがあれば取​​り消すことができれば嬉しいです。私はそのようなものは見ませんでしたので、Navigatingイベントにフラグを設定し、NavigatedイベントまたはLoadCompletedイベントでフラグを設定解除することを考えていましたが、Webページのリンクをクリックするケースがあります(javascript Navigatingが実行されるが、NavigatedとLoadCompletedは決して起動しない新しいページには移動しない)。オンデマンドでブラウザの状態を判断する方法はありますか?WPF WebBrowserがページをロードしているかどうかを確認する

答えて

0

いいえ、必要に応じてWPFブラウザのステータスを照会する方法はありません。 Navigatingイベントハンドラで独自のフラグを設定し、Navigatedイベントハンドラでそのフラグを設定解除するという独自のアイデアを解決しました。ナビゲーションをキャンセルするスクリプト(javascript:void(0))があったため、私にとって信頼性の高いものではありませんでした。

3

MSDNと同じように、ナビゲートイベントが呼び出されると、ナビゲーションが明示的にCancelでない限り、ナビゲートイベントも発生します。私は以下のコードスニペットをうまくいきました。 (Navigation)イベントの後にNavigatedイベントが発生するたびに発生します。

void Window1_Loaded(object sender, RoutedEventArgs e) 
    { 
     browser = new WebBrowser(); 
     browser.Navigate(new Uri("http://www.google.com")); 
     browser.Navigating += new NavigatingCancelEventHandler(browser_Navigating); 
     browser.Navigated += new NavigatedEventHandler(browser_Navigated); 
    } 

    void browser_Navigating(object sender, NavigatingCancelEventArgs e) 
    { 
     Console.WriteLine("Loading Webpage !!"); 
    } 

    void browser_Navigated(object sender, NavigationEventArgs e) 
    { 
     Console.WriteLine("Webpage Loaded !!"); 
    } 

これがあなたが探しているものでない場合は、問題に直面しているウェブページのURLを入力してください。

+0

ありがとうKarthik。このページは残念ながら公開されておらず、単にブラウザで訪れても機能しません。私のアプリケーションにプラグインされています。リンクがhref = "javascript:void(0)"を含んでいたときにナビゲートを開始していないことがわかりました(明らかにナビゲーションをキャンセルしています)。私はそれをhref = "#"に変更し、今度は両方を起動します。私はまた、私がfalseを返すことを追加発見した。リンクのonclickイベントに、Webブラウザはイベントを発生させません。質問に具体的に対処するために回答を更新する場合は、回答としてマークします。これらのイベントは機能するはずですが、オンデマンドでステータスを照会することはありません。 – xr280xr

関連する問題