如何隐藏ListView控件中的列?

Aan*_*Aan 10 .net c# listview winforms

如何在ListView不将列Width属性设置为的情况下隐藏控件中的列0

另外,我可以锁定Width一列吗?

小智 11

最简单的方法如下,试试这段代码:

隐藏:

      LVW.Columns.Item(0).Width = 0
Run Code Online (Sandbox Code Playgroud)

再次显示:

      LVW.Columns.Item(0).AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent)
Run Code Online (Sandbox Code Playgroud)

这可能对某人有所帮助


ani*_*rud 6

只需删除您希望的索引处的列:

listView1.Columns.RemoveAt(3);
Run Code Online (Sandbox Code Playgroud)

当你想要它回来时,只需插入它的名字:

listView1.Columns.Insert(3, "Column Name");
Run Code Online (Sandbox Code Playgroud)

它将以它的价值观回来。

  • 这大概会改变其他列的子项索引吗? (5认同)

AaA*_*AaA 6

我正在寻找一种方法来做同样的事情,这让我来到了这里。

我不确定是否有更好的方法,所以我使用以下解决方法。

如果您需要向项目添加值Listview但不想显示它,则可以使用大于总列数的子项目索引。这样,即使该值存在,用户也看不到它。


Nic*_*ick 5

如果您需要将数据与行关联而不显示它,请使用 ListView 的Tag属性

  • -1 `Tag` 有点令人厌恶,你能用它做的只有这么多。更好的方法是简单地从 ListViewItem 类继承并将您自己的属性/字段添加为真正的成员。这样你就有了一个干净、明确和可扩展的架构。 (2认同)
  • 根据您想要做什么,标签很好。 (2认同)

Tig*_*ran 4

不太清楚这里C++Cli标签的重要性,但是:

我认为如果您正在谈论 中的列ListView,那么您就处于控件的详细信息视图中。ListView据我所知,没有内置的隐藏/显示列方式,因此解决方案之一可以是从 UI 中删除该列。

要以最顺利的方式做到这一点,只需ListView在中间调用您的列再生代码 即可

listView.SuspendLayout(true);

/*Manipulate column here*/

listView.ResumeLayout();
Run Code Online (Sandbox Code Playgroud)

上可见的数据ListView始终保留在“您的手中”,因此此时您将决定再次显示该列,只需显示该列并ListView再次填充即可。

希望这可以帮助。