2011-09-01 34 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

我不会使用这种设计。我会有一个窗体显示,也许循环使用窗体上的控件 - 不显示每个实例的新窗体。将数据加载到数据网格中,并让用户编辑所有数据并一次保存。