【发布时间】:2015-01-20 22:00:22
【问题描述】:
我有一个存储多个事务的 XML。现在我想将其解析为 ListView 并返回 ListView。
这里是解析 XML 并返回 ListView 的函数
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();
在 ^this 调用之后,我的 ListView 不会做任何事情。如果我之后尝试向该 ListView 添加一个元素,它不会做出反应。 ListView.Items.Count 仍然是预期的 +1,但由于某种原因我无法查看 subItems 的值。它还反序列化我添加的项目,但它从不显示一个。如果我删除 ReadPaths() 调用,我的项目会正确显示。这种行为是关于什么的,什么可以帮助解决它?
【问题讨论】:
-
如果您不喜欢,我很想知道原因。评论将有助于改善我的问题;)
-
我不太确定,但如果你这样做,所有链接到 lstGeldEintraege 的事件都会在你创建一个新的 ListView 时丢失。
-
所以我应该返回一个项目数组并将其分配给列表视图?
-
或者将 ListView 传递给您的函数...清除项目然后重新填充它。
-
等一下,我会尝试解决方法,看看是否是这个原因
标签: c# xml winforms list listview