【问题标题】:Inconsistent listview subitem properties不一致的列表视图子项属性
【发布时间】:2011-04-07 17:26:10
【问题描述】:

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

如您所见,两者都带有下划线,也不是蓝色。我错过了什么吗?

【问题讨论】:

    标签: c# winforms listview


    【解决方案1】:

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

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

    listAvailableSizes.Items[0].UseItemStyleForSubItems = false; 
    

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

    如果UseItemStyleForSubItemstrue,则可以在子项中设置样式,并且存储正常——只是永远不会被使用。

    【讨论】:

    • 太棒了,谢谢你,我正要去做 Boo 提到的自定义绘图,我真的不想花时间去做。
    【解决方案2】:

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

    【讨论】:

    • 我不确定这是否能回答我的问题。如果我更改子项位置 0 的前景色,则两个项都会变为蓝色。
    • 是的..您可以在第一个子项上设置颜色..这基本上是 ListViewItem 转换为子项的表示。设置 item 或 subitem-at-position-zero 的前景色将影响整行。它是围绕列表视图公共控件的 .NET 包装器的实现细节,而不是公共控件本身的限制。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多