Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取计数并弹出消息框_C#_Visual Studio 2010_C# 4.0 - Fatal编程技术网

C# 如何获取计数并弹出消息框

C# 如何获取计数并弹出消息框,c#,visual-studio-2010,c#-4.0,C#,Visual Studio 2010,C# 4.0,我试图让messagebox显示元素,但运行应用程序时messagebox不会弹出 string xml = @"<?xml version='1.0' encoding='UTF-8'?> <widgets> <widget> <url>~/Portal/Widgets/ServicesList.ascx</url> <castAs>ServicesWidget</castAs

我试图让messagebox显示元素,但运行应用程序时messagebox不会弹出

string xml = @"<?xml version='1.0' encoding='UTF-8'?>
<widgets>
    <widget>
        <url>~/Portal/Widgets/ServicesList.ascx</url>
        <castAs>ServicesWidget</castAs>
        <urlType>ascx</urlType>
        <parameters>
            <PortalCategoryId>3</PortalCategoryId>
        </parameters>
    </widget>
    <widget>
        <url>www.omegacoder.com</url>
        <castAs>ServicesWidget</castAs>
        <urlType>htm</urlType>
        <parameters>
            <PortalCategoryId>41</PortalCategoryId>
        </parameters>
    </widget>
</widgets>";

XDocument loaded = XDocument.Parse( xml );

var widgets = from x in loaded.Descendants( "widget" )
              select new
              {
                  URL = x.Descendants( "url" ).First().Value,
                  Category = x.Descendants( "PortalCategoryId" ).First().Value
              };

MessageBox.Show("one");
foreach ( var wd in widgets ){
MessageBox.Show("two");

 }
MessageBox.Showone;出现了。 MessageBox.showtoo;永远不会出现

还有,如果我想看一些小部件>我是C新手该怎么办 谢谢

如果您尝试MessageBox.Showwidgets.Count.ToString我打赌它会显示0。for循环的行为定义为对包含0个元素的集合不进行迭代。因此,永远不会显示两个

编辑- 至于为什么会是零,如果是的话,这显然是个问题!也许你需要在加载的小部件/小部件中从x循环通过

我不记得XDocument是否强迫您吞下document元素,或者与XMLDocument不同。

如果您尝试MessageBox.Showwidgets.Count.ToString,我打赌它将显示0。for循环的行为定义为对包含0个元素的集合不进行迭代。因此,永远不会显示两个

编辑- 至于为什么会是零,如果是的话,这显然是个问题!也许你需要在加载的小部件/小部件中从x循环通过

我不记得XDocument是迫使您吞咽document元素还是不像XMLDocument那样

MessageBox.Show("one");

检查是否有任何元素要循环

更换

MessageBox.Show("one");


检查是否有任何元素要循环

您可以将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
          };
更新: 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);
        }

它应该可以正常工作。

您可以将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
          };
更新: 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);
        }

它应该按预期的那样工作。

您是否尝试使用调试器进行调试?是否出现错误?您使用的是控制台应用程序吗?我用NUnit中运行的console.WriteLine替换了MessageBox调用,此代码按预期运行了两次。您是否尝试使用调试器逐步执行?是否出现错误?您正在使用控制台应用程序吗?我用NUnit中运行的console.WriteLine替换了MessageBox调用,该代码按预期运行了2次。