Cuma, Mayıs 29, 2009

Saving Treeview State

treview node larının expand durumunun reloading vb olaylarından sonra tekrar yüklenmesiyle ilgili örnek

google da aradım adam gibi yapan birini bulamadım yok dictionary kullananlar hash yapanlar 12 saatimi aldı. Oturdum 15 dakkada kendim yaptım, bu da ayrı bi delirme nedeni.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim SendTree As New TreeNode
SendTree.Nodes.Clear()
CopyExpandeds(SendTree.Nodes, treeView1.Nodes)

'... reloading code u ...

SendExpandeds(treeView1.Nodes, SendTree.Nodes)
'SendExpandeds(treeView1.Nodes, SendTree.Nodes(0))
Dim tmpNode As New TreeNode
SendTree = tmpNode
End Sub

Private Sub CopyExpandeds(ByVal CopyTree As TreeNodeCollection, ByVal SourceTree As TreeNodeCollection)
If SourceTree Is Nothing Then
Exit Sub
End If

For Each Sn As TreeNode In SourceTree
Dim n As New TreeNode
n.Name = Sn.Name
If Sn.IsExpanded Then
n.Expand()
' T ve F ler şart değil, T and F not require
'Kopyalama ve test amaçlı
n.Text = "T"
Else
n.Collapse()
n.Text = "F"
End If

CopyTree.Add(n)
CopyExpandeds(n.Nodes, Sn.Nodes)
Next
End Sub

Sub SendExpandeds(ByVal TargetTree As TreeNodeCollection, ByVal sourcetree As TreeNodeCollection)
If sourcetree Is Nothing Then
Exit Sub
End If

For Each Sn As TreeNode In sourcetree

If Sn.IsExpanded Then
TargetTree.Item(Sn.Index).Expand()
Else
'TargetTree.Item(Sn.Index).Collapse()
End If
SendExpandeds(TargetTree.Item(Sn.Index).Nodes, Sn.Nodes)
Next
End Sub

vb, visual basic

Hiç yorum yok:

Yorum Gönder