SubItems [index]不起作用

时间:2014-06-14 15:32:55

标签: c# listview

我想获得特定项目的子项目,

textBox1.Text = item.SubItems[1].Text;

最近,我遇到了item.SubItems[index]的问题。虽然我找到了设置值的解决方法,但我无法获取或设置该值。然而,我仍然无法得到。我查了一下,没有人似乎有同样的问题,所以我确定我做了一些明显的错误。我只是不知道发生了什么。

编辑:

根本没有错误。除了textBox1.Text没有设置为子项文本外,程序继续运行就像没有出错一样。项目是listviewitem。这是一些代码:

 foreach (ListViewItem item in ths.listView1.SelectedItems)
        {
            textBox1.Text = item.Text;

            numericUpDown1.Value = Convert.ToDecimal(item.SubItems[1]);
            comboBox1.Text = item.SubItems[2].Text;
            textBox3.Text = item.SubItems[3].Text;
            ths.listView1.Items.Remove(item);
        }

是Form1。

1 个答案:

答案 0 :(得分:0)

我注意到你在listView1.SelectedItems的循环中,显示每个项目。

这没有意义。即使有选择,您也可能只需要提取一个listviewitem的值。

我们代码中的第二个错误是你是Removing来自ListView的循环项。当您使用两个“不同”集合时,即SelectedItemsItems,您仍然在修改迭代器,这是不行的。

所以你需要定义你想要实现的目标:删除所有选定项目或显示一个项目的内容?

要删除所有选定的项目,可以这样做:

while (listView1.SelectedItems.Count > 0) 
       listView1.Items.Remove(listView1.SelectedItems[0]);

也许你想显示你删除的最后一项的值.. ??如果是这样的话:

while (listView1.SelectedItems.Count > 0) 
{
   if (listView1.SelectedItems.Count == 1)
   {
       ListViewItem item = listView1.SelectedItems[0];
       textBox1.Text = item.Text;
       numericUpDown1.Value = Convert.ToDecimal(item.SubItems[1]);
       comboBox1.Text = item.SubItems[2].Text;
       textBox3.Text = item.SubItems[3].Text;
   }
   listView1.Items.Remove(listView1.SelectedItems[0]);
}