@@ -74,7 +74,20 @@ public virtual TreeNode this[string key]
7474
7575 public virtual int Add ( TreeNode node )
7676 {
77- return AddInternal ( node , 0 ) ;
77+ if ( node == null )
78+ throw new ArgumentNullException ( "node" ) ;
79+
80+ if ( node . parent != null ) node . Remove ( ) ;
81+
82+ node . parent = owner ;
83+ node . index = items . Count ;
84+
85+ items . Add ( node ) ;
86+
87+ if ( owner . TreeView != null )
88+ node . treeView = owner . TreeView ;
89+
90+ return node . index ;
7891 }
7992 public virtual TreeNode Add ( string text )
8093 {
@@ -98,8 +111,20 @@ public virtual void AddRange(TreeNode[] nodes)
98111
99112 for ( int i = 0 ; i < nodes . Length ; i ++ )
100113 {
101- AddInternal ( nodes [ i ] , i ) ;
114+ var node = nodes [ i ] ;
115+ if ( node == null )
116+ throw new InvalidOperationException ( "node is null" ) ;
117+
118+ if ( node . parent != null ) node . Remove ( ) ;
119+
120+ node . parent = owner ;
121+ node . index = items . Count + i ;
122+
123+ if ( owner . TreeView != null )
124+ node . treeView = owner . TreeView ;
102125 }
126+
127+ items . AddRange ( nodes ) ;
103128 }
104129 public virtual void Clear ( )
105130 {
@@ -271,25 +296,6 @@ private static ArrayList FindInternal(string key, bool searchAllChildren, TreeNo
271296 }
272297 return nodes ;
273298 }
274- private int AddInternal ( TreeNode node , int delta )
275- {
276- if ( node == null )
277- throw new ArgumentNullException ( "node" ) ;
278-
279- if ( node . parent != null ) node . Remove ( ) ;
280-
281- node . parent = owner ;
282- node . index = items . Count ;
283-
284- items . Add ( node ) ;
285-
286- if ( owner . TreeView != null )
287- {
288- node . treeView = owner . TreeView ;
289- }
290-
291- return node . index ;
292- }
293299 private bool IsValidIndex ( int index )
294300 {
295301 return index >= 0 && index < Count ;
0 commit comments