允许来自foreach循环的userform输入?

时间:2011-09-01 19:28:40

标签: c# winforms foreach wait

我有一个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#中是否存在任何类型的等待用户输入函数,我可以用它来执行此操作?

更新:

根据反馈,我已成功将程序修改为:

  • 将XML列表加载到队列中(使用ForEach循环)
  • 设置用户输入以遍历队列(删除顶部项目,显示下一个顶级项目)

4 个答案:

答案 0 :(得分:2)

创建输入表单(使用visual studio designer,非常简单),然后通过调用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 :(得分:1)

执行此操作的一种方法是执行while循环,以继续检查值。然而;根据您实现此操作的方式以及应用程序的整体结构,这可能会导致应用程序无响应。

答案 2 :(得分:1)

您可以打开用户可以输入的模式表单。

如果您希望始终保持同一表单,则最好将所有节点复制到Queue<XmlNode>,一次处理一个节点,当用户按下按钮时,选择队列中的下一个项目直到队列是空的。

答案 3 :(得分:1)

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