Вы можете заменить ваш запрос LINQ на:
var widgets = from x in loaded.Descendants("widgets").Descendants( "widget" )
select new
{
URL = x.Descendants( "url" ).First().Value,
Category = x.Descendants( "PortalCategoryId" ).First().Value
};
UPDATE:
Обе версии LINQ должны работать правильно. Моя ошибка, Потомки могут указывать не только на непосредственно вложенные узлы, но и на все узлы в поддереве.
Возможная причина проблемы:
Однако имейте в виду, что для отображения второго окна сообщения вам необходимо закрыть первое. Я только что проверил это, и это сработало.
Предлагаемое решение:
Чтобы можно было показывать несколько диалогов с сообщениями, вы можете просто создать свой собственный класс формы в проекте, создать его экземпляр и показать его с помощью метода Show () , т.е.
Вы можете добавить новую форму Windows , назвать ее MessageForm и использовать следующий код:
//MessageBox.Show(new Form(), "one");
MessageForm msgDlg = new MessageForm() { Message = "one" };
msgDlg.Show(this);
foreach (var wd in widgets)
{
//MessageBox.Show(new Form(), "two");
MessageForm msgDlgS = new MessageForm() { Message = "two" };
msgDlgS.Show(this);
}
Он должен работать как задумано.