TreeView.TreeViewNodeSorter Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
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)]
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
Значение свойства
Интерфейс IComparer для выполнения пользовательской сортировки.
- Атрибуты
Примеры
В следующем примере кода показано, как использовать свойство для сортировки TreeViewNodeSorter узлов от наименьшего к самому большому. Чтобы запустить этот пример, вставьте следующий код в форму Windows Form и вызовите InitializeTreeView1
из конструктора или Load обработчика событий формы.
// 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
Комментарии
Пользовательская сортировка применяется при TreeViewNodeSorter установке .
TreeNode При изменении метки можно вызвать Sort метод , чтобы снова отсортировать элементы с помощью настраиваемого сортировщика, заданного свойством TreeViewNodeSorter .
Примечание
Сортировщик по умолчанию использует метод на Compare основе , указанного CurrentCulture приложением. Это означает, что TreeNode объекты с равным значением хранятся в том порядке, в котором они были добавлены в TreeView элемент управления . Это поведение может отличаться, если применяется пользовательская сортировка.