2017-11-19 14 views
0

geckowebbrowserを使用してC#のwebbrowserアプリケーションで作業しています。ここでは、完了したドキュメントを検出するよりも、ナビゲートするURLを指定します。この後、私はテキストボックスにいくつかの値を入力し、ボタンをクリックします。 今、heresが私の問題です。ボタンをクリックした後のこの時点で、もう一度、documentcompletedイベントを検出して何かをしたいと思っています。今、私はどのように単一のイベントと単一のイベントハンドラを使用して別のタスクを実行することができます。geckowebbrowserで複数回文書を検出したい場合

 geckoWebBrowser1.Navigate("www.facebook.com"); 
     geckoWebBrowser1.DocumentCompleted += new EventHandler<Gecko.Events.GeckoDocumentCompletedEventArgs>(geckoWebBrowser1_DocumentCompleted); 

     GeckoHtmlElement ge= (GeckoHtmlElement)geckoWebBrowser1.Document.GetElementById("u_0_5"); 
     ge.Click(); 

この時点で、私はdocumentcompletedイベントを検出し、他のタスクを実行したいと思います。これを行う方法? ありがとうございます。

+0

行3と4を 'geckoWebBrowser1_DocumentCompleted'に入れてください。 – cramopy

+0

私はすでにそれをしました。私ははっきりしないかもしれないので、私に明確にさせてください。 documentcompleteイベントを取得した後、私のコードはもう一度他のdocument.Soに移動するボタンをクリックします。私は次の(または秒)のドキュメント完了イベントを検出し、いくつかの他のsetattributesとclickを実行しなければなりません。 – user1244539

答えて

0

ちょうどあなたのクラスにグローバル変数を追加します。

CurrentAction MyAction = CurrentAction.UNKNOWN; 

public enum CurrentAction 
{ 
    UNKNOWN = -1, 
    ClickButtonOne, 
    DoSomethingElse, 
    ClickTheOtherButton, 
    DoNothing, 
} 

次に前に、最初のページに移動し、このフラグを設定します。

switch (MyAction) 
{ 
    case ClickButtonOne: 
     // find the button, check if not null 
     MyAction = CurrentAction.DoSomethingElse; // set a new action 
     button.Click(); 
     break; 
    case DoSomethingElse: 
     // Do something 
     MyAction = CurrentAction.ClickTheOtherButton; // set a new action 
     break; 
    case ClickTheOtherButton: 
     // this is the last page, so lets stop here 
     MyAction = CurrentAction.DoNothing; // specific action 
     break;   
    default: 
     Debug.Assert(false); break; 
} 
DocumentCompletedイベントで

MyAction = CurrentAction.ClickButtonOne; 
geckoWebBroser1.Navigate("site.com"); 

は、これを行います

だから、DocumentCompletedに入るたびに、コードは別の仕事をします。あなたが必要とするアクションを設定し、ヌルチェックをするのを忘れないでください。また、NavigationErrorイベントを実装することをお勧めします。何か問題があるかどうかを知ることができます。

関連する問題