允许来自foreach循环的用户表单输入

本文关键字:用户 表单 输入 循环 foreach | 更新日期: 2023-09-27 18:07:12

我有一个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列表加载到Queue中(使用ForEach循环)
  • 设置用户输入以遍历队列(删除顶部项,显示下一个顶部项)

允许来自foreach循环的用户表单输入

创建输入表单(使用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
}

您可以打开一个模态表单,用户可以在其中进行输入。

如果您想一直保持在同一个表单上,您最好将所有节点复制到Queue<XmlNode>,每次处理一个,当用户按下按钮时,在队列中选择下一个项目,直到队列为空。

这样做的一种方法是做一个while循环,不断检查一个值。然而;这可能会导致应用程序变得无响应,这取决于您如何实现它以及应用程序的整体结构。

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