2011-10-28 14 views
1

私はforループを持っていて、サイトに行き、そのフォームに投稿します。 listboxのすべての項目について、ユーザーがサイトにデータを記入してから移動するのを待つ必要があります。ここでのポイントは「待つ」ことです。forループをユーザー入力待ちにする方法

私の質問です。forループをユーザー入力待ちにすることはできますか?

これは私がフォームにデータをロードするために働いていますforループです:

if (webBrowser1.DocumentText.Contains("Welcome")) 
{ 
    for (int i = 0; i < listBox4.Items.Count; i++) 
    { 

     listBox4.SetSelected(i, true); 
     listBox5.SetSelected(i, true); 
     //coded to submit to form 

     Application.DoEvents(); 
    } 
} 

これは、サイト上で提出クリックするコードです:

Application.DoEvents(); 
foreach (HtmlElement webpageelement in allelements) 
{ 

    if (webpageelement.GetAttribute("value") == "Submit") 
    { 
     webpageelement.InvokeMember("click"); 
     Application.DoEvents(); 

    } 

} 

私はしましたまた、それを続行させるために、コードを使わずにforループを作ってみました。 ex:i ++の場合はifステートメントを実行してください。ただし、それは私のインターフェースよりも遅れています。

+0

あなたの質問は本当にではありません明らかです。あなたがやっていることややりたいことをより良く説明してください。 – Otiel

+2

Form.ShowDialog()を使用してください。 –

+0

@Otiel Alright。私はリストボックスを持っています。リストボックスにアイテムを追加することができます。リストボックスの各項目について、私のプログラムはサイトに行き、あらかじめ定義された情報をそれに書き込む。私は、ユーザーがキャプチャを記入するのを待ってから、forループがリスト内の次の項目に移動する前に、私のインターフェースでsubmitボタンをクリックするようにします。 – user1017524

答えて

1

forまたはwhileループを実行してユーザー入力を待つのは良い解決策ではありません。 しないでください。あなたのプログラムは、条件をループから抜け出すのを待っている間、絶えず動作します。代わりに、イベントなどを使用して解決策を見つける必要があります。

は、私たちが取り組んでいるリストボックスの項目のインデックスを保持するグローバル変数を持って:あなたはあなたの質問のコメントで提案さForm.ShowDialog()ソリューションを使用したくない場合は

することは、あなたはそのような何かを思い付くことができ:

int currentItemIndex; 

はあなたSubmitボタンをClickイベントを追加します。ユーザーがSubmitをクリックすると、それは次のlistBox項目を処理するメソッドを呼び出します。

private void buttonSubmit_Click(Object sender, EventArgs e) { 
    // Process next listBox item 
    ProcessNextItem(); 
} 

listBox項目を処理する方法:

private void ProcessNextItem() { 
    currentItemIndex += 1; 
    if (currentItemIndex >= listBox.Items.Count) { 
     // We have gone through all listBox items 

     // Do nothing 
    } else { 
     // Fill predefined information to the website 
     website.SomeField = listBox.Items[currentItemIndex].SomeField; // Whatever you do to fill predefined information 
} 

をと(開始時にメソッドを呼び出しますユーザーが最初listBox項目が処理される前にSubmitをクリックしません):

private void Start() { 
    currentItemIndex = -1; 
    ProcessNextItem(); 
} 
+0

Woah、ありがとうございます。 – user1017524

関連する問題