【问题标题】:ListView remove column but it is still thereListView 删除列,但它仍然存在
【发布时间】:2015-11-21 08:13:50
【问题描述】:

我使用ListView.Columns.RemoveAt 删除列。

显示的结果是正确的。根据显示,该列已被删除,并且该删除已应用于所有列表视图项。

但我还添加了一个按钮来将 ListView 项目的文本传输到剪贴板。

传输结果包含所有列 - 包括已删除的列。

在删除列后是否可能需要应用一些更新方法?

【问题讨论】:

  • 如果您不发布相关代码,我们很难确定问题出在哪里。还有,WPF 或 Winforms?请添加适当的标签。
  • 如何将数据设置到剪贴板?
  • 我投票结束这个问题,因为不清楚你在问什么,因为你没有提供足够的信息来解决这个问题。
  • 我认为即使没有添加代码,问题的描述也很清楚和充分,而且这个问题很有趣,可以继续讨论..

标签: c# winforms listview


【解决方案1】:

Listview 中的Columns 只是SubItems显示而不是存储的位置。

对于存储,每个ListVieItem 可以有(它自己的数量)SubItems

当您删除 Column 时,SubItems 将保持不变。

您必须改为循环覆盖Items,并在适用的情况下删除不需要的SubItems

示例 1:将其添加到 Button 并观察如何根据需要随时按 Button

private void button1_Click(object sender, EventArgs e)
{
     listView1.Items[0].SubItems.Add("ABC");
     Console.WriteLine("Item 0 has " + listView1.Items[0].SubItems.Count + " subitems.);
}

如果您有Item[0],您可以根据需要添加任意数量的SubItems无需定义应显示的Column。所以他们在那里,但他们没有表现出来。

示例 2:现在添加另一个 Button

private void button2_Click(object sender, EventArgs e)
{
    int someindex = 4;
    foreach (ListViewItem lvi in listView1.Items)
        if (lvi.SubItems.Count - 1 > someindex && lvi.SubItems[someindex] != null)
        {
            lvi.SubItems.RemoveAt(someindex);
            Console.WriteLine("Subitem " + someindex + " removed in Item " + lvi.Index);
        }
}

这就是您可以从每个Item 中删除5th SubItem(如果有的话)的方法..

【讨论】:

  • 啊哈!谢谢你..这是有道理的。
  • 如果您对答案感到满意,请考虑考虑accepting it..! - 我看到你从来没有这样做过:去左上角的(不可见的)复选标记,在答案的投票下方,然后单击它!它变成绿色并为我们俩赢得了一点声誉。..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-10
  • 2017-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
相关资源
最近更新 更多