C# 从函数C返回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

我有一个存储多个事务的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();
此调用后,我的ListView将不会执行任何操作。如果我后来尝试向该ListView添加一个元素,它将不会做出反应。ListView.Items.Count仍然是预期的+1,但由于某些原因,我无法查看子项的值。它还反序列化我添加的项目,但它从不显示一个。如果删除ReadPath调用,我的项目将正确显示。这种行为的原因是什么?有什么可以帮助修复它?

已解决


看起来用户2888973是对的。指定ListView时,将删除所有链接元素。我只需要使用一个引用作为参数,它就工作了!:

如果你不喜欢,我很想知道为什么。评论有助于改进我的问题;我不太确定,但如果您这样做,在创建新的ListView时,链接到lstgeldeIntrage的所有事件都将丢失。因此,我应该返回一个项目数组并将其分配给ListView?或将ListView传递给您的函数。。。清除项目,然后重新填充。给我一秒钟,我会尝试解决方法,看看这是否是原因