【问题标题】:C# ListView - Programatically editing column entriesC# ListView - 以编程方式编辑列条目
【发布时间】:2015-05-28 18:48:25
【问题描述】:

我正在使用具有两列的 ListView

添加新项目(到第 0 列)我正在使用:

listView1.Items.Add("Hello")

这会导致 Hello 出现在索引最低的列中。 不过,我还想添加行号

我正在尝试这个:

        for (int c = 0; c < listView1.Items.Count; c++)
        {
            listView1.Items[c].SubItems.Clear();
            listView1.Items[c].SubItems.Add(c.ToString());
        }

我认为问题在于主要项目被清除,即使我只是尝试clear() 子项目(即第二列中的条目)。

所以基本上我的问题是: 如何单独编辑列条目以显示行/行号?

【问题讨论】:

标签: c# listview edit multiple-columns subitem


【解决方案1】:

SubItems 中的第一项(索引 0)实际上是左列中的主项。

如果您已经添加了类似 listViewItem.SubItems.Add(string.Empty); 的子项目,那么您可以像这样编辑该子项目:

    for (int c = 0; c < listView1.Items.Count; c++)
    {
        listView1.Items[c].SubItems[1].Text = c.ToString();
    }

【讨论】:

  • 当我尝试访问 SubItems[1] 时出现System.ArgumentOutOfRangeException
  • 如果您没有添加子项,那么您需要先添加它。我以为你被添加了,因为你正在清除它们。
  • 当我使用SubItems[1] 时它不显示。当我使用SubItems[0] 时它会出现。
  • 如果你没有像listViewItem.SubItems.Add(string.Empty);这样添加任何子项,那么索引1就不会有任何子项。
【解决方案2】:

我可能已经解决了...

可能是一旦添加了SubItem,主要项目就会移动到SubItem[0]

以下代码似乎对我有用,但我不确定是否存在更好的方法。

        for (int c = 0; c < listView1.Items.Count; c++)
        {
            listView1.Items[c].SubItems[0].Text = listView1.Items[c].Text;
            listView1.Items[c].SubItems.Add(c.ToString());
            listView1.Items[c].SubItems[1].Text = c.ToString();
        }

【讨论】:

    猜你喜欢
    • 2016-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2020-10-16
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多