C# 从函数C返回ListView
我有一个存储多个事务的XML。现在我想将其解析为ListView并返回ListView 下面是解析XML并返回ListView的函数C# 从函数C返回ListView,c#,xml,winforms,list,listview,C#,Xml,Winforms,List,Listview,我有一个存储多个事务的XML。现在我想将其解析为ListView并返回ListView 下面是解析XML并返回ListView的函数 public ListView ReadPaths() { try { ListView oList = new ListView(); XmlDocument oXMLDoc = new XmlDocument(); oXMLDoc.Load
public ListView ReadPaths()
{
try
{
ListView oList = new ListView();
XmlDocument oXMLDoc = new XmlDocument();
oXMLDoc.Load("Buchungen.xml");
XmlNodeList oTransactions = oXMLDoc.SelectNodes("Buchungen/Buchung");
foreach(XmlNode oTransaction in oTransactions)
{
ListViewItem oItem = new ListViewItem();
if (oTransaction.Attributes["positive"].Value == "true")
oItem.ImageIndex = 0;
else
oItem.ImageIndex = 1;
oItem.SubItems.Add(oTransaction.Attributes["description"].Value);
oItem.SubItems.Add(oTransaction.Attributes["date"].Value);
oItem.SubItems.Add(oTransaction.Attributes["amount"].Value);
oList.Items.Add(oItem);
}
return oList;
}
catch(Exception ex)
{
MessageBox.Show("Fehler beim lesen der Daten: " + ex.Message, "Fehler!", MessageBoxButtons.OK, MessageBoxIcon.Error);
return null;
}
}
我将此源分配给的ListView的计数大于零,这是预期的
XMLHandler oXMLHandler = new XMLHandler();
lstGeldEintraege = oXMLHandler.ReadPaths();
lstGeldEintraege.Refresh();
此调用后,我的ListView将不会执行任何操作。如果我后来尝试向该ListView添加一个元素,它将不会做出反应。ListView.Items.Count仍然是预期的+1,但由于某些原因,我无法查看子项的值。它还反序列化我添加的项目,但它从不显示一个。如果删除ReadPath调用,我的项目将正确显示。这种行为的原因是什么?有什么可以帮助修复它?已解决
看起来用户2888973是对的。指定ListView时,将删除所有链接元素。我只需要使用一个引用作为参数,它就工作了!: 如果你不喜欢,我很想知道为什么。评论有助于改进我的问题;我不太确定,但如果您这样做,在创建新的ListView时,链接到lstgeldeIntrage的所有事件都将丢失。因此,我应该返回一个项目数组并将其分配给ListView?或将ListView传递给您的函数。。。清除项目,然后重新填充。给我一秒钟,我会尝试解决方法,看看这是否是原因