Colors ObjectListView/TreeListView:按可展开部分替换背景色

Colors ObjectListView/TreeListView:按可展开部分替换背景色,colors,objectlistview,alternating,treelistview,Colors,Objectlistview,Alternating,Treelistview,我有一个TreeListView控件,其中每个根项都是可扩展的,包含任意数量的子节点。背景色应仅在根级别交替,以便所有子节点具有相同的背景色。如果我使用RowFormatter,只要它没有通过单击标题进行排序,它就可以工作 private void FormatRow(OLVListItem item) { var node = (BaseNode)item.RowObject; var root = node.GetRoot();

我有一个TreeListView控件,其中每个根项都是可扩展的,包含任意数量的子节点。背景色应仅在根级别交替,以便所有子节点具有相同的背景色。如果我使用RowFormatter,只要它没有通过单击标题进行排序,它就可以工作

    private void FormatRow(OLVListItem item)
    {
        var node = (BaseNode)item.RowObject;
        var root = node.GetRoot();
        if (root == null) return;

        var alternate = Model.GetNodeIndex(root) % 2 == 1;
        item.BackColor = alternate ? Color.FromArgb(240, 240, 240) : Color.White;
    }

如何在树中获取对象的实际索引,而不是基础数据中的索引?

您可以使用
args.DisplayIndex
FormatRowEventArgs
获取实际索引,但这并没有真正的帮助,因为每个子对象都基于相同的索引。也许您可以在内容或排序更改后通过迭代所有项来应用颜色,并为每个父项应用交替颜色。您可以使用
args.DisplayIndex
FormatRowEventArgs
获取实际索引,但这并没有真正的帮助,因为每个子对象都基于相同的索引。也许您可以在内容或排序更改后应用颜色,方法是迭代所有项,并为每个父项应用交替颜色。