omidmehraban
پنج شنبه 08 شهریور 1386, 18:41 عصر
با سلام و احترام:
من می خواهم nodeهای TreeView را بصورت دلخواه مرتب کنم.
برای اینکار از متد sort خود treeview استفاده می کنم.کارش را عالی انجام میدهد،اما بعد از مرتب سازی،اگر بخواهید از مرتبسازی براساس حروف الفبا صرف نظر کنید،نمی شود.
البته MSDN میگوید از خصوصیت TreeViewNodeSorter استفاده کنید.
این هم لینکش:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/CPref17/html/P_System_Windows_Forms_TreeView_TreeViewNodeSorter .htm
کد زیر که مربوط به مقاله بالاست،nodeها را براساس اندازه انها مرتب میکند:
' 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"
' Handle the click event for the button.
AddHandler button1.Click, AddressOf button1_Click
' 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(ty.Text, tx.Text)
End Function
End Class
من زیاد از قسمت مرتب سازیش سر در نمی یارم،اگر دوستان من را راهنمایی کنند لطف بزرگی کردند.
من می خواهم nodeهای TreeView را بصورت دلخواه مرتب کنم.
برای اینکار از متد sort خود treeview استفاده می کنم.کارش را عالی انجام میدهد،اما بعد از مرتب سازی،اگر بخواهید از مرتبسازی براساس حروف الفبا صرف نظر کنید،نمی شود.
البته MSDN میگوید از خصوصیت TreeViewNodeSorter استفاده کنید.
این هم لینکش:
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/CPref17/html/P_System_Windows_Forms_TreeView_TreeViewNodeSorter .htm
کد زیر که مربوط به مقاله بالاست،nodeها را براساس اندازه انها مرتب میکند:
' 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"
' Handle the click event for the button.
AddHandler button1.Click, AddressOf button1_Click
' 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(ty.Text, tx.Text)
End Function
End Class
من زیاد از قسمت مرتب سازیش سر در نمی یارم،اگر دوستان من را راهنمایی کنند لطف بزرگی کردند.