将项添加到新列不起作用

时间:2014-04-13 15:01:44

标签: c# winforms listview

我正在尝试将一些项目从数组添加到列表视图中的新列,这就是我想要做的:

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (listBox1.SelectedItems.Count > 0)
        {
            if (listView2.Columns.Count > 1)
            {
                for (int i = 1; i < listView2.Columns.Count; i++)
                {
                    listView2.SuspendLayout();
                    listView2.Columns.RemoveAt(i);
                    listView2.ResumeLayout();
                }
            }

            if (clmnnum[listBox1.SelectedIndex] == 1)
            {
                listView2.SuspendLayout();
                listView2.Columns.Add("Primary Values", -2, HorizontalAlignment.Left);
                listView2.ResumeLayout();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = exp[listBox1.SelectedIndex].ToString();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = hpe[listBox1.SelectedIndex].ToString();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = lve[listBox1.SelectedIndex].ToString();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = stre[listBox1.SelectedIndex].ToString();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = powe[listBox1.SelectedIndex].ToString();
                listView2.Items[listBox1.SelectedIndex].SubItems[1].Text = ende[listBox1.SelectedIndex].ToString();
            }
        }

我不断对该列进行超出范围的例外,就好像它不存在一样,我无法找到原因。

编辑:我忘了说明了列表视图已经是第一列(0),所以不是它。

1 个答案:

答案 0 :(得分:1)

我认为您必须添加SubItems,而不是索引访问...可能SubItems不存在

listView2.Items[listBox1.SelectedIndex].SubItems.Add(powe[listBox1.SelectedIndex].ToString())

我只是做一个测试 这个例子叫System.ArgumentOutOfRangeException

   listView1.Items.Add("test");
   listView1.Columns.Add("Primary Values", -2, HorizontalAlignment.Left);
   listView1.Items[0].SubItems[1].Text = "3232";

这很好用

   listView1.Items.Add("test");
   listView1.Columns.Add("Primary Values", -2, HorizontalAlignment.Left);
   listView1.Items[0].SubItems.Add("3232");