列表视图子项不一致的属性

时间:2011-04-07 17:26:10

标签: c# winforms listview

我在这里很困惑。我试图对这个列表视图的各种单元格进行样式化,但结果很奇怪。我创建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具有蓝色文本而没有下划线,但是,这是它显示的方式:

listview

正如你所看到的那两个都有下划线而且都不是蓝色。我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

通常,所有子项目都具有与项目相同的样式(字体和颜色)。 (仅供参考,SubItem[0]ListViewItem本身相同。

要允许子项具有不同的属性,请执行以下操作:

listAvailableSizes.Items[0].UseItemStyleForSubItems = false; 

一旦设置为falseListView在确定要使用的字体/颜色时,实际上会查看子项目中的值。

如果UseItemStyleForSubItemstrue,您可以在子项目中设置样式,并将它们存储好 - 只是它们永远不会被使用。

答案 1 :(得分:0)

子项不支持使用标准.NET Listview实现进行着色。您需要查看自定义绘制列表视图。