TreeView.TreeViewNodeSorter Eigenschap
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
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; }
[<System.ComponentModel.Browsable(false)>]
member this.TreeViewNodeSorter : System.Collections.IComparer with get, set
Public Property TreeViewNodeSorter As IComparer
Waarde van eigenschap
De IComparer functie voor het uitvoeren van de aangepaste sortering.
- Kenmerken
Voorbeelden
In het volgende codevoorbeeld ziet u hoe u de TreeViewNodeSorter eigenschap gebruikt om knooppunten van kleinste naar grootste te sorteren. Als u dit voorbeeld wilt uitvoeren, plakt u de volgende code in een Windows Formulier en roept u InitializeTreeView1 aan vanuit de constructor van het formulier of Load gebeurtenis-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
' 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
Opmerkingen
De aangepaste sortering wordt toegepast wanneer de TreeViewNodeSorter set is ingesteld.
Als een TreeNode label wordt gewijzigd, kunt u de Sort methode aanroepen om de items opnieuw te sorteren met de aangepaste sorteerfunctie die is opgegeven door de TreeViewNodeSorter eigenschap.
Note
De standaardsorteerder gebruikt de Compare methode op basis van de CurrentCulture opgegeven door de toepassing. Dit betekent dat TreeNode objecten met gelijke waarde worden bewaard in de volgorde waarin ze aan het TreeView besturingselement zijn toegevoegd. Dit gedrag kan afwijken als een aangepaste sortering wordt toegepast.