我在这里很困惑。我试图对这个列表视图的各种单元格进行样式化,但结果很奇怪。我创建listviewitem的代码如下:
lvi = new ListViewItem();
lvi.Text = row["Size"].ToString();
lvi.SubItems.Add(row["Item"].ToString());
lvi.SubItems[0].Font = new System.Drawing.Font(lvi.Font, FontStyle.Underline);
lvi.SubItems[1].ForeColor = Color.Blue;
listAvailableSizes.Items.Add(lvi);
所以,理论上我的第一个子项应该加下划线,第二个子项应该是蓝色的(这些只是任意的样式)。立即窗口确认情况应该如此:
listAvailableSizes.Items[0].SubItems[0].ForeColor
"{Name=WindowText, ARGB=(255, 0, 0, 0)}"
A: 255
B: 0
G: 0
IsEmpty: false
IsKnownColor: true
IsNamedColor: true
IsSystemColor: true
Name: "WindowText"
R: 0
listAvailableSizes.Items[0].SubItems[1].ForeColor
"{Name=Blue, ARGB=(255, 0, 0, 255)}"
A: 255
B: 255
G: 0
IsEmpty: false
IsKnownColor: true
IsNamedColor: true
IsSystemColor: false
Name: "Blue"
R: 0
listAvailableSizes.Items[0].SubItems[0].Font.Underline
true
listAvailableSizes.Items[0].SubItems[1].Font.Underline
false
根据这一点,子项目位置0具有常规彩色文本和下划线,位置1具有蓝色文本而没有下划线,但是,这是它显示的方式:
正如你所看到的那两个都有下划线而且都不是蓝色。我错过了什么吗?
答案 0 :(得分:2)
通常,所有子项目都具有与项目相同的样式(字体和颜色)。 (仅供参考,SubItem[0]
与ListViewItem
本身相同。
要允许子项具有不同的属性,请执行以下操作:
listAvailableSizes.Items[0].UseItemStyleForSubItems = false;
一旦设置为false
,ListView
在确定要使用的字体/颜色时,实际上会查看子项目中的值。
如果UseItemStyleForSubItems
是true
,您可以在子项目中设置样式,并将它们存储好 - 只是它们永远不会被使用。
答案 1 :(得分:0)
子项不支持使用标准.NET Listview实现进行着色。您需要查看自定义绘制列表视图。