如何在 ListView 控件中 hide/show 列?

How to hide/show columns in a ListView control?

在 Windows 资源管理器中,您可以 hide/show 列。 Windows ListView 控件是否也支持此功能? (我假设 Windows Explorer 使用我们无权访问的另一个控件)。

您可以根据需要使用 ListView_GetColumn() and ListView_SetColumn() 到 get/set 列的属性。要隐藏列,请获取其当前宽度,然后将其宽度设置为 0。要显示列,请恢复其先前的宽度。

但是,当列为 "hidden" 时,用户仍然可以抓住列边缘的分隔符并手动调整列的大小。为避免这种情况,您可以:

  1. 当您想要 re-show 时,使用 ListView_DeleteColumn(), and then use ListView_InsertColumn() 完全删除该列。

  2. 子类化 ListView 以拦截来自 ListView 的 header 控件的 HDN_BEGINTRACK 通知,为 "hidden" 列返回 TRUE 以防止它们调整大小。