根据自定义比较器,对指定的树节点下的第一级子节点进行排序。

命名空间:  SuperMap.UI
程序集:  SuperMap.UI.Controls (in SuperMap.UI.Controls)
版本: dll

语法

C#
public void SortNodes(
	WorkspaceTreeNodeBase nodebase,
	IComparer<WorkspaceTreeNodeBase> comparer
)

参数

nodebase
Type: SuperMap.UI..::.WorkspaceTreeNodeBase
指定的树节点。
comparer
Type: System.Collections.Generic..::.IComparer<(Of <(WorkspaceTreeNodeBase>)>)

示例

以下代码示范了如何对工作空间树中的某个数据源节点下的数据集子节点进行排序,并且排序方式采用自定义的方式。

下列代码要求在 Form 上添加了一个 ToolScript 控件,并且在控件上添加一个 Button,该 Button 的名称为:toolStripButtonCustomSort。还要求在 Form 上创建了一个 WorkspaceTree 实例,实例的名称为:workspaceTree,还要求为该 workspaceTree 对象指定一个工作空间。

CopyC#
private void toolStripButtonCustomSort_Click(object sender, EventArgs e)
{
    // 获取工作空间树中的数据源集合节点
    WorkspaceTreeNodeBase datasourcesNode = workspaceTree.DatasourcesNode;
    // 获取数据源集合节点下的第一个数据源节点
    WorkspaceTreeNodeBase datasourceNode = datasourcesNode.FirstNode as WorkspaceTreeNodeBase;

    // 对数据源节点下的所有数据集节点按照数据集名称的长短进行顺序排序
    workspaceTree.SortNodes(datasourceNode, new TextLengthCompare());
}

// 自定义比较器,定义一种新的比较算法,确定排序的先后顺序
// 这里定义的算法为比较树节点显示名称的长短
private class TextLengthCompare : IComparer<WorkspaceTreeNodeBase>
{
    #region IComparer<WorkspaceTreeNodeBase> 成员

    public int Compare(WorkspaceTreeNodeBase x, WorkspaceTreeNodeBase y)
    {
        // 获取树节点显示名称的长度
        Int32 xNodeTextLength = x.Text.Length;
        Int32 yNodeTextLength = y.Text.Length;

        return xNodeTextLength - yNodeTextLength;
    }

    #endregion
}

请参见