Разрешить ввод пользовательской формы из цикла foreach? - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть цикл 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:

На основании обратной связи я успешно изменил программу на:

  • Загрузка списка XML в очередь (с использованием цикла ForEach)
  • Настройка пользовательского ввода для перебора очереди (удалить верхний элемент, показать следующий верхний элемент)

Ответы [ 4 ]

2 голосов
/ 01 сентября 2011

Создайте форму ввода (используйте дизайнер 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 голос
/ 02 сентября 2011

Я бы не использовал этот дизайн. Я хотел бы иметь форму, которая показывает, и, возможно, цикл с использованием элемента управления на форме - не отображая новую форму для каждого экземпляра. Загрузите данные в сетку данных и позвольте пользователю отредактировать их все и сохранить одновременно.

1 голос
/ 01 сентября 2011

Вы можете открыть модальную форму, где пользователь может сделать ввод.

Если вы хотите оставаться на одной и той же форме все время, лучше скопировать все узлы в Queue<XmlNode>, обрабатывать один повремя и когда пользователь нажимает кнопку, выбирает следующий элемент в очереди, пока очередь не станет пустой.

1 голос
/ 01 сентября 2011

Один из способов сделать это - сделать цикл while, который проверяет значение.Тем не мение;в зависимости от того, как вы реализуете это, и от общей структуры приложения, это может привести к тому, что приложение перестает отвечать на запросы.

...