TreeView.TreeViewNodeSorter TreeView.TreeViewNodeSorter TreeView.TreeViewNodeSorter TreeView.TreeViewNodeSorter Property

Definición

Obtiene o establece la implementación de IComparer para realizar una ordenación personalizada de los nodos TreeView.Gets or sets the implementation of IComparer to perform a custom sort of the TreeView nodes.

public:
 property System::Collections::IComparer ^ TreeViewNodeSorter { System::Collections::IComparer ^ get(); void set(System::Collections::IComparer ^ value); };
[System.ComponentModel.Browsable(false)]
public System.Collections.IComparer TreeViewNodeSorter { get; set; }
member this.TreeViewNodeSorter : System.Collections.IComparer with get, set
Public Property TreeViewNodeSorter As IComparer

Valor de propiedad

La interfaz IComparer para realizar la ordenación personalizada.The IComparer to perform the custom sort.

Ejemplos

En el ejemplo de código siguiente se muestra cómo TreeViewNodeSorter utilizar la propiedad para ordenar los nodos de menor a mayor.The following code example demonstrates how to use the TreeViewNodeSorter property to sort nodes from smallest to largest. Para ejecutar este ejemplo, pegue el código siguiente en un Windows Form y llame InitializeTreeView1 a desde el constructor del formulario Load o el controlador de eventos.To run this example, paste the following code into a Windows Form and call InitializeTreeView1 from the form's constructor or Load event handler.

    // Create a node sorter that implements the IComparer interface.
private:
    ref class NodeSorter : public IComparer
    {
        // Compare the length of the strings, or the strings
        // themselves, if they are the same length.
    public:
        virtual int Compare(Object^ x, Object^ y)
        {
            TreeNode^ tx = (TreeNode^)x;
            TreeNode^ ty = (TreeNode^)y;

            // Compare the length of the strings, returning the difference.
            if (tx->Text->Length != ty->Text->Length)
            {
                return (tx->Text->Length - ty->Text->Length);
            }

            // If they are the same length, call Compare.
            return String::Compare(tx->Text, ty->Text);
        }
    };

    // Declare the TreeView.
private:
    TreeView^ initialTreeView;
private:
    TextBox^ displayNodes;
private:
    Button^ setSorter;

private:
    void InitializeInitialTreeView()
    {
        // Create the TreeView
        initialTreeView = gcnew TreeView();
        initialTreeView->Size = System::Drawing::Size(200, 200);

        // Create the button and set some basic properties.
        setSorter = gcnew Button();
        setSorter->Location = Point(205, 138);
        setSorter->Text = "Set Sorter";

        // Handle the click event for the button.
        setSorter->Click += gcnew EventHandler(this, 
            &TreeViewWhidbeyMembersExample::SetSorter_Click);

        // Create the root nodes.
        TreeNode^ docNode = gcnew TreeNode("Documents");
        TreeNode^ spreadSheetNode = gcnew TreeNode("Spreadsheets");

        // Add some additional nodes.
        spreadSheetNode->Nodes->Add("payroll.xls");
        spreadSheetNode->Nodes->Add("checking.xls");
        spreadSheetNode->Nodes->Add("tracking.xls");
        docNode->Nodes->Add("phoneList.doc");
        docNode->Nodes->Add("resume.doc");

        // Add the root nodes to the TreeView.
        initialTreeView->Nodes->Add(spreadSheetNode);
        initialTreeView->Nodes->Add(docNode);

        // Add the TreeView to the form.
        this->Controls->Add(initialTreeView);
        this->Controls->Add(setSorter);
    }

    // Set the TreeViewNodeSorter property to a new instance
    // of the custom sorter.
private:
    void SetSorter_Click(Object^ sender, EventArgs^ e)
    {
        initialTreeView->TreeViewNodeSorter = gcnew NodeSorter();
    }
// Declare the TreeView.
private TreeView treeView1;
private TextBox textBox1;
private Button button1;

private void InitializeTreeView1()
{
    // Create the TreeView
    treeView1 = new TreeView();
    treeView1.Size = new Size(200, 200);

    // Create the button and set some basic properties. 
    button1 = new Button();
    button1.Location = new Point(205, 138);
    button1.Text = "Set Sorter";

    // Handle the click event for the button.
    button1.Click += new EventHandler(button1_Click);

    // Create the root nodes.
    TreeNode docNode = new TreeNode("Documents");
    TreeNode spreadSheetNode = new TreeNode("Spreadsheets");

    // Add some additional nodes.
    spreadSheetNode.Nodes.Add("payroll.xls");
    spreadSheetNode.Nodes.Add("checking.xls");
    spreadSheetNode.Nodes.Add("tracking.xls");
    docNode.Nodes.Add("phoneList.doc");
    docNode.Nodes.Add("resume.doc");

    // Add the root nodes to the TreeView.
    treeView1.Nodes.Add(spreadSheetNode);
    treeView1.Nodes.Add(docNode);

    // Add the TreeView to the form.
    Controls.Add(treeView1);
    Controls.Add(button1);
}

// Set the TreeViewNodeSorter property to a new instance
// of the custom sorter.
private void button1_Click(object sender, EventArgs e)
{
    treeView1.TreeViewNodeSorter = new NodeSorter();
}

// Create a node sorter that implements the IComparer interface.
public class NodeSorter : IComparer
{
    // Compare the length of the strings, or the strings
    // themselves, if they are the same length.
    public int Compare(object x, object y)
    {
        TreeNode tx = x as TreeNode;
        TreeNode ty = y as TreeNode;

        // Compare the length of the strings, returning the difference.
        if (tx.Text.Length != ty.Text.Length)
            return tx.Text.Length - ty.Text.Length;

        // If they are the same length, call Compare.
        return string.Compare(tx.Text, ty.Text);
    }
}
' Declare the TreeView.
Private WithEvents treeView1 As TreeView
Private textBox1 As TextBox
Private WithEvents button1 As Button


Private Sub InitializeTreeView1()

    ' Create the TreeView
    treeView1 = New TreeView()
    treeView1.Size = New Size(200, 200)

    ' Create the button and set some basic properties. 
    button1 = New Button()
    button1.Location = New Point(205, 138)
    button1.Text = "Set Sorter"

    ' Create the root nodes.
    Dim docNode As New TreeNode("Documents")
    Dim spreadSheetNode As New TreeNode("Spreadsheets")

    ' Add some additional nodes.
    spreadSheetNode.Nodes.Add("payroll.xls")
    spreadSheetNode.Nodes.Add("checking.xls")
    spreadSheetNode.Nodes.Add("tracking.xls")
    docNode.Nodes.Add("phoneList.doc")
    docNode.Nodes.Add("resume.doc")

    ' Add the root nodes to the TreeView.
    treeView1.Nodes.Add(spreadSheetNode)
    treeView1.Nodes.Add(docNode)

    ' Add the TreeView to the form.
    Controls.Add(treeView1)
    Controls.Add(button1)

End Sub


' Set the TreeViewNodeSorter property to a new instance
' of the custom sorter.
Private Sub button1_Click(ByVal sender As Object, _
    ByVal e As EventArgs) Handles button1.Click

    treeView1.TreeViewNodeSorter = New NodeSorter()

End Sub 'button1_Click

' Create a node sorter that implements the IComparer interface.

Public Class NodeSorter
    Implements IComparer
    
    ' Compare the length of the strings, or the strings
    ' themselves, if they are the same length.
    Public Function Compare(ByVal x As Object, ByVal y As Object) _
        As Integer Implements IComparer.Compare
        Dim tx As TreeNode = CType(x, TreeNode)
        Dim ty As TreeNode = CType(y, TreeNode)
       
        If tx.Text.Length <> ty.Text.Length Then
            Return tx.Text.Length - ty.Text.Length
        End If
        Return String.Compare(tx.Text, ty.Text)

    End Function
End Class

Comentarios

La ordenación personalizada se aplica cuando TreeViewNodeSorter se establece.The custom sort is applied when the TreeViewNodeSorter is set.

Si se TreeNode cambia una etiqueta, puede Sort llamar al método para ordenar los elementos de nuevo con el clasificador personalizado especificado por la TreeViewNodeSorter propiedad.If a TreeNode label is changed, you can call the Sort method to sort the items again with the custom sorter specified by the TreeViewNodeSorter property.

Nota

El ordenador predeterminado usa el Compare método basado en el CurrentCulture especificado por la aplicación.The default sorter uses the Compare method based on the CurrentCulture specified by the application. Esto significa que TreeNode los objetos con el mismo valor se mantienen en el orden en que se agregaron TreeView al control.This means that TreeNode objects with equal value are kept in the order in which they were added to the TreeView control. Este comportamiento puede ser diferente si se aplica una ordenación personalizada.This behavior may be different if a custom sort is applied.

Se aplica a

Consulte también: