Hi all
Still having this problem with my own treeview.
If I add a cloned Treenode, it is not visible
in the treeview, but it seems it is there because
when I debug it I see the new node with all its entrys.
Following again the code from my Treeview class and
how I am testing it.
I have also implemented the code from this article:
http://support.microsoft.com/?id=311318
Thanks for any comment.
Frank
**** The Treeview class **********************
Public Class Cls_firstTreeView
Inherits System.Windows.Forms.TreeView
Implements ICloneable
Public Shadows Property SelectedNode() As TreeNode
Get
Return CType(MyBase.SelectedNode, TreeNode)
End Get
Set(ByVal Value As TreeNode)
MyBase.SelectedNode = Value
End Set
End Property
Public Function Clone() As Object Implements
ICloneable.Clone
Return Me.MemberwiseClone
End Function
End Class
Public Class TreeNode
Inherits System.Windows.Forms.TreeNode
Implements IDictionaryEnumerator
Private nodeEntry As DictionaryEntry
Private enumerator As IEnumerator
Private var_Key As String
Private var_Key1 As String
Private var_Key2 As String
Private var_Key3 As String
Private var_Key4 As String
Private var_Key5 As String
Private var_PK As Integer
Public Overridable Overloads ReadOnly Property Entry
() As DictionaryEntry Implements
IDictionaryEnumerator.Entry
Get
Return nodeEntry
End Get
End Property
Public Overridable Overloads Function MoveNext() As
Boolean Implements IDictionaryEnumerator.MoveNext
Dim Success As Boolean
Success = enumerator.MoveNext()
Return Success
End Function
Public Overridable Overloads ReadOnly Property Current
() As Object Implements IEnumerator.Current
Get
Return enumerator.Current
End Get
End Property
Public Overridable Overloads ReadOnly Property Key()
As Object Implements IDictionaryEnumerator.Key
Get
Return nodeEntry.Key
End Get
End Property
Public Overridable Overloads ReadOnly Property Value
() As Object Implements IDictionaryEnumerator.Value
Get
Return nodeEntry.Value
End Get
End Property
Public Overridable Overloads Sub Reset() Implements
IEnumerator.Reset
enumerator.Reset()
End Sub
Public Overrides Function Clone() As Object
Return Me.MemberwiseClone
End Function
Public Sub New(Optional ByVal Text As String = "",
Optional ByVal Key As String = "", Optional ByVal Key1 As
String = "", Optional ByVal Key2 As String = "", Optional
ByVal Key3 As String = "", Optional ByVal Key4 As String
= "", Optional ByVal Key5 As String = "", Optional ByVal
PK As Integer = 0)
enumerator = MyBase.Nodes.GetEnumerator()
'MyBase.New(Text)
var_Key = Key
var_Key1 = Key1
var_Key2 = Key2
var_Key3 = Key3
var_Key4 = Key4
var_Key5 = Key5
var_PK = PK
End Sub
Public Overloads Function Add(ByVal Text As String,
ByVal Key As String, Optional ByVal Key1 As String = "",
Optional ByVal Key2 As String = "", Optional ByVal Key3
As String = "", Optional ByVal Key4 As String = "",
Optional ByVal Key5 As String = "", Optional ByVal PK As
Integer = 0) As TreeNode
MyBase.Nodes.Add(Text)
var_Key = Key
var_Key1 = Key1
var_Key2 = Key2
var_Key3 = Key3
var_Key4 = Key4
var_Key5 = Key5
var_PK = PK
End Function
Public Overloads Function Add(ByVal TreeNode As
TreeNode) As Integer
MyBase.Nodes.Add(TreeNode)
End Function
Public Property NodeKey() As String
Get
Return nodeEntry.Key.ToString()
End Get
Set(ByVal Value As String)
nodeEntry.Key = Value
End Set
End Property
Public Property NodeValue() As Object
Get
Return nodeEntry.Value
End Get
Set(ByVal Value As Object)
nodeEntry.Value = Value
End Set
End Property
'Public Property Key() As String
' Get
' Return var_Key
' End Get
' Set(ByVal Value As String)
' var_Key = Value
' End Set
'End Property
Public Property Key1() As String
Get
Return var_Key1
End Get
Set(ByVal Value As String)
var_Key1 = Value
End Set
End Property
Public Property Key2() As String
Get
Return var_Key2
End Get
Set(ByVal Value As String)
var_Key2 = Value
End Set
End Property
Public Property Key3() As String
Get
Return var_Key3
End Get
Set(ByVal Value As String)
var_Key3 = Value
End Set
End Property
Public Property Key4() As String
Get
Return var_Key4
End Get
Set(ByVal Value As String)
var_Key4 = Value
End Set
End Property
Public Property Key5() As String
Get
Return var_Key5
End Get
Set(ByVal Value As String)
var_Key5 = Value
End Set
End Property
Public Property PK() As Integer
Get
Return var_PK
End Get
Set(ByVal Value As Integer)
var_PK = Value
End Set
End Property
End Class
**** Test it like this **********************
Dim MyTreeView As New firstTreeView.Cls_firstTreeView()
Dim MyRootNode1 As New firstTreeView.TreeNode("Root X1")
MyRootNode1.NodeKey = "Key Root X1"
Dim MyRootNode2 As New firstTreeView.TreeNode("Root X2")
MyRootNode2.NodeKey = "Key Root X2"
Dim MyChildNode1 As New firstTreeView.TreeNode("Child X1")
MyChildNode1.NodeKey = "Key Child X1"
Dim MyChildNode2 As New firstTreeView.TreeNode("Child X2")
MyChildNode2.NodeKey = "Key Child X2"
MyRootNode1.Nodes.Add(MyChildNode1)
MyRootNode2.Nodes.Add(MyChildNode2)
MyTreeView.Nodes.Add(MyRootNode1)
MyTreeView.Nodes.Add(MyRootNode2)
Me.TreeView1.Nodes.Clear()
Dim RootNodes As New firstTreeView.TreeNode()
For Each RootNodes In MyTreeView.Nodes
Me.TreeView1.Nodes.Add(CType(RootNodes.Clone,
firstTreeView.TreeNode))
Next
Me.TreeView1.Refresh()