2011-09-01 61 views
0

我有一個foreach循環,我需要暫停以允許用戶在窗體上輸入。允許來自foreach循環的用戶表單輸入?

foreach (XmlNode node2 in xmlFile) 
    { 
     ...get currentRow from XML file 
     ...update form label 

     ???wait for user to enter data on form and press button 
    } 

在C#中有什麼樣的等待用戶輸入函數可以用來做到這一點嗎?

UPDATE:

基於I已成功修改程序到反饋:

  • 加載XML列表到隊列(使用ForEach循環)
  • 安裝程序的用戶輸入來迭代通過隊列(刪除頂部項目,顯示下一個頂部項目)
+0

輸入窗體是否始終顯示給用戶?當用戶開始輸入信息時,你只想暫停foreach循環嗎? – Tipx

+0

我通常喜歡做事件驅動的行爲。通常它們比嵌套模式表單更乾淨。 –

回答

1

你可以打開一個模式的形式,用戶可以進行輸入。

如果你想保持相同的形式在所有的時間你最好在同一時間的所有節點複製到Queue<XmlNode>,處理一個,當用戶按下按鈕,選擇下一個項目在隊列中,直到隊列爲空。

1

一種方法來做它會做一個while循環,不斷檢查一個值。然而;取決於你如何實現這個以及應用程序的整體結構,這可能會導致應用程序無法響應。

2

創建你輸入表單(使用Visual Studio設計,非常簡單),然後通過調用ShowDialog()顯示它的循環:

foreach(XmlNode node2 in xmlFile) 
{ 
    //... 
    MyInputForm form = new MyInputForm(); 
    form.ShowDialog(); // it waits until user close the input form 
    var input = form.PropertyContainingInputFromTheUser; 
    //...use the input 

} 
1

我不會使用這種設計。我會有一個窗體顯示,也許循環使用窗體上的控件 - 不顯示每個實例的新窗體。將數據加載到數據網格中,並讓用戶編輯所有數據並一次保存。