【问题标题】:Adding XML elements to ListBox将 XML 元素添加到 ListBox
【发布时间】:2012-04-14 20:38:43
【问题描述】:

我不知道如何转换 name 的类型,以便可以将其中的每个元素添加到我的 ListBox。如果有人可以提供帮助,将不胜感激。

XDocument doc = XDocument.Load(workingDir + @"\Moduleslist.xml");

var names = doc.Root.Descendants("Module").Elements("Name").Select(b => b.Value);

listBox1.Items.AddRange(names);

我在 AddRange(names) 上遇到错误,说参数无效

【问题讨论】:

  • 变量名是否为数组...!
  • 它是表单应用程序、Web 表单还是什么?
  • addrange 函数只能与数组一起使用

标签: c# xml winforms listbox


【解决方案1】:

names is IEnumerable<String>listBox.Items.AddRange 期待一个对象数组,并且它们之间没有隐式转换。

一个快速的解决方案是:

listBox1.Items.AddRange(names.ToArray());

foreach (var item in names)
{
    listBox1.Items.Add(item);
}

【讨论】:

  • 谢谢老兄,效果很好,我已经用它代替了填充列表框的 XmlTextReader 代码。谢谢
【解决方案2】:

试试这个代码而不是你的最后一行代码:

listBox1.DataSource = names;
this.listBox1.DisplayMember = YOURDISPLAYMEMBER;
this.listBox1.ValueMember = YOURVALUEMEMBER;

【讨论】:

    【解决方案3】:

    也许:

    listBox1.Items.AddRange(doc.Root.Descendants("Module").Elements("Name").Select(b => b.Value).ToArray());
    

    【讨论】: