13

如何CListCtrl自动调整其列的宽度?通常,当列表中的项目太长时,后端会从视图中消失,用户必须手动调整相应列的宽度。有没有办法通过代码做到这一点?

4

3 回答 3

15

自动调整列的大小很容易:

for(int i = 0;i < pListCtrl->GetHeaderCtrl()->GetItemCount();++i)
    pListCtrl->SetColumnWidth(i,LVSCW_AUTOSIZE_USEHEADER);

这将优化列。

于 2010-04-09T19:45:53.637 回答
1

你有“无滚动”选项吗?默认情况下(“无滚动”选项关闭),如果项目太长,将出现滚动条。

于 2010-04-09T10:19:27.917 回答
1

我假设您的意思是报告模式下的列表控件?不幸的是,没有办法自动调整列的大小。您可以做的(我在某些地方所做的)是在输入项目时计算列的宽度,然后处理 WM_SIZE 并调整列的大小。但是,这会导致用户所做的更改丢失,因此您可能需要更好的算法,例如跟踪用户是否进行了任何更改,如果他没有调整大小。从用户体验的角度来看,这不是很好,我只在选择数量的情况下使用它,在这些情况下,行为在 UI 的其余部分的上下文中是有意义的。

于 2010-04-09T13:09:42.247 回答