2011-12-12 7 views
-1

を再開します。一時停止して、私はこのようになりますforeachループを持っているForeachループ

foreach (var line in theCP4UnknownList.Distinct()) 
{ 
    var splitUnknowns = line.Split(' '); 
    KTS_Save saveForm = new KTS_Save(splitUnknowns[0], splitUnknowns[1], splitUnknowns[3], splitUnknowns[4], openFile.FileName); 

    saveForm.Show(); 
    saveForm.Activate(); 
    //This is where I would like to add a check to see if a button is clicked, if true continue the foreach loop, else wait for the button to be clicked. 
} 

このKTS_Saveフォーム必要な4つのテキストボックスのたびに自動的に入力されますフィールド(だけでなく、他の空白のものとがありますユーザーが記入すると)foreachループが開始されます。しかし、一度に1つの新しいフォームしか開くことができないので、次のKTS_Saveフォームが開く前にユーザーが「保存」ボタンをクリックするのを待つ必要があります。保存ボタンは現在のデータを保存します形式でテキストファイルに変換します。

foreachループを一時停止してボタンがクリックされるのを待つ方法はありますか?どうすればこれを達成できますか?

+0

Winformsのか? WebForms?何? –

+0

@JohnSaunders:VSのC#フォームwinforms。 – theNoobGuy

+0

ちょうど興味がありますが、これを別のスレッドに入れようと計画しています。ループが待機している間、このスレッドはハングします。 – MGZero

答えて

4

ちょうどそのようにコードを変更します。

foreach (var line in theCP4UnknownList.Distinct()) 
{ 
    var splitUnknowns = line.Split(' '); 
    KTS_Save saveForm = new KTS_Save(splitUnknowns[0], splitUnknowns[1], splitUnknowns[3], splitUnknowns[4], openFile.FileName); 

    saveForm.ShowDialog(); 
} 
+0

うわー。それは簡単だった。ハハ。ありがとうございました:) – theNoobGuy

+0

@theNoobGuy:歓迎します:-) – Fischermaen

2

利用saveForm.ShowDialog()代わりのsaveForm.Show()