2012-03-31 187 views
0

我不知道如何转换名称的类型,以便其中的每个元素都可以添加到我的ListBox中。如果有人可以帮助,将不胜感激。将XML元素添加到列表框

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

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

listBox1.Items.AddRange(names); 

我得到说无效的参数

+0

变量名是数组或不... ...! – Dinesh 2012-03-31 10:48:43

+0

不是它不是一个数组 – a7omiton 2012-03-31 10:50:56

+0

它是一个表单应用程序,Web表单或什么? – Eugene 2012-03-31 10:51:25

回答

2

名称上的AddRange(地名)的错误IEnumerable<String>listBox.Items.AddRange期待一个对象数组,并在它们之间没有隐式转换。

一个快速的解决方案是:

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

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

谢谢你的家伙很好地工作,我已经取代了我的XmlTextReader代码填充列表框代替。谢谢 – a7omiton 2012-03-31 11:02:23

1

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

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

可能:

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