C# ListView项目没有';t在删除和插入新列后更改

C# ListView项目没有';t在删除和插入新列后更改,c#,winforms,listview,C#,Winforms,Listview,我有一个列表框填充了一些项目,在SelectedIndexChanged事件中,我倾向于删除任何存在的额外列(ID为1或更大),之后,我创建一个新列并重新添加项目,但之前的项目保持不变,就像添加()重载不起作用一样,这是我的密码: if (listBox1.SelectedItems.Count > 0) { if (listView2.Columns.Count > 1) { int b

我有一个列表框填充了一些项目,在
SelectedIndexChanged
事件中,我倾向于删除任何存在的额外列(ID为1或更大),之后,我创建一个新列并重新添加项目,但之前的项目保持不变,就像
添加()
重载不起作用一样,这是我的密码:

if (listBox1.SelectedItems.Count > 0)
        {
            if (listView2.Columns.Count > 1)
            {
                int bla = listView2.Columns.Count;
                for (int i = 1; i < bla; i++)
                {
                    //MessageBox.Show("Removing Column: " + (bla - i));
                    listView2.Columns.RemoveAt(bla - i);
                }
            }

            if (clmnnum[listBox1.SelectedIndex] == 1)
            {
                listView2.SuspendLayout();
                listView2.Columns.Add("Primary Values", 90, HorizontalAlignment.Left);
                listView2.ResumeLayout();
                listView2.Items[0].SubItems.Add(exp[listBox1.SelectedIndex].ToString());
                listView2.Items[1].SubItems.Add(hpe[listBox1.SelectedIndex].ToString());
                listView2.Items[2].SubItems.Add(lve[listBox1.SelectedIndex].ToString());
                listView2.Items[3].SubItems.Add(stre[listBox1.SelectedIndex].ToString());
                listView2.Items[4].SubItems.Add(powe[listBox1.SelectedIndex].ToString());
                listView2.Items[5].SubItems.Add(ende[listBox1.SelectedIndex].ToString());
            }
        }
if(listBox1.SelectedItems.Count>0)
{
如果(listView2.Columns.Count>1)
{
int bla=listView2.Columns.Count;
对于(int i=1;i

列表框包含的项目与每个数组中的项目一样多(clmnnum、exp、hpe等)。

我不完全确定这里的问题是什么,您说添加重载似乎不起作用,但您表示问题是旧项目仍然存在,至少我假设这就是您所说的“以前的项目保持不变”的意思

如果我理解您正在尝试做什么,我会鼓励您清除listView2的项,并使用一个函数来构建listView2,因为您每次都希望它从无到有


它至少可以让您了解正在发生的事情。

我会尝试这样做,但让我在这里进一步解释,我单击列表框中的一个项目,获取它的索引,使用它加载所述数组中的值,添加一列,然后添加子项(因为第一列中的项目已经存在),然后单击另一个项目,它删除额外的列,重新创建一个新列,但值与前一列保持不变,它不会从新单击的索引中加载新值。因此它与子项类似。Add从缓存中获取值?没错,但我认为删除列也会删除项,不?应该这样做,在删除列之前,我会尝试Column.Items.Clear(),只是为了确定。实际上,我用解决方案编辑了您的答案,该解决方案与Items.Clear()有关,idk他们正在做什么来查看它。