在 .NET WinForm 中有个 ListView 控件,通过设置其 View 属性值为 Details 能够实现像资源管理器中浏览文件详细信息列表那样的效果(类似行列数据表格),这个组件中的每条数据都是 ListViewItem 类型,类型中还可包含 ListViewItem.ListViewSubItem 子类型;可以理解为 ListViewItem 作为主数据类型,在 Details 显示模式中排在第一列,而其子数据项依次排在之后的列。
子数据类型与主数据类型一样,都含有 ForeColor 和 BackColor 属性,也就是说应该是可以修改子数据类型颜色的,但是在实际情况下直接使用子数据类型的这些属性来修改样式却是无效的,比如:
ListViewItem listViewItem = new ListViewItem();
listViewItem.SubItems.Add("子项文本", Color.DarkRed, Color.White, DefaultFont);
这是因为主数据项中有个 UseItemStyleForSubItems 属性,这个属性决定了子数据项是否采用主数据项的样式,如果这个属性值为 true,那么子数据项的样式就被主数据项的样式给覆盖了,所以就没有效果,只需把这个属性值设为 false 就能够看到效果了:
ListViewItem listViewItem = new ListViewItem();
listViewItem.UseItemStyleForSubItems = false;
listViewItem.SubItems.Add("子项文本", Color.DarkRed, Color.White, DefaultFont);
效果示例注:很遗憾这些数据行不能直接更改行高,字体大小也不能够自适应行高;但可通过指定 ListView 控件的 SmallImageList 属性项给 ImageList 设置宽高,这样数据行就能够被 Image 给撑大,不过 Image 会显示在最左边,且宽度不能为 0,也就是说如果你尝试用此方法撑高一点行高,那么最左侧会始终留有 1px 的宽度距离。
相关环境:.NET Framework 4.5、Windows 窗体应用