@@ -129,10 +129,10 @@ private void OnCollapsing(TreeNodeAdv node)
129129
130130 [ Category ( "Behavior" ) ]
131131 public event EventHandler < TreeViewAdvEventArgs > Collapsed ;
132- private void OnCollapsed ( TreeNodeAdv node )
132+ private void OnCollapsed ( TreeNodeAdv node , bool byUser )
133133 {
134134 if ( Collapsed != null )
135- Collapsed ( this , new TreeViewAdvEventArgs ( node ) ) ;
135+ Collapsed ( this , new TreeViewAdvEventArgs ( node , byUser ) ) ;
136136 }
137137
138138 [ Category ( "Behavior" ) ]
@@ -145,10 +145,10 @@ private void OnExpanding(TreeNodeAdv node)
145145
146146 [ Category ( "Behavior" ) ]
147147 public event EventHandler < TreeViewAdvEventArgs > Expanded ;
148- private void OnExpanded ( TreeNodeAdv node )
148+ private void OnExpanded ( TreeNodeAdv node , bool byUser )
149149 {
150150 if ( Expanded != null )
151- Expanded ( this , new TreeViewAdvEventArgs ( node ) ) ;
151+ Expanded ( this , new TreeViewAdvEventArgs ( node , byUser ) ) ;
152152 }
153153
154154 [ Category ( "Behavior" ) ]
@@ -436,7 +436,7 @@ public void EnsureVisible(TreeNodeAdv node)
436436 TreeNodeAdv parent = node . Parent ;
437437 while ( parent != _root )
438438 {
439- parent . IsExpanded = true ;
439+ parent . Expand ( false ) ;
440440 parent = parent . Parent ;
441441 }
442442 ScrollTo ( node ) ;
@@ -717,7 +717,7 @@ private void CreateNodes()
717717 Selection . Clear ( ) ;
718718 SelectionStart = null ;
719719 _root = new TreeNodeAdv ( this , null ) ;
720- _root . IsExpanded = true ;
720+ _root . Expand ( false ) ;
721721 if ( _root . Nodes . Count > 0 )
722722 CurrentNode = _root . Nodes [ 0 ] ;
723723 else
@@ -778,6 +778,7 @@ private struct ExpandArgs
778778 public TreeNodeAdv Node ;
779779 public bool Value ;
780780 public bool IgnoreChildren ;
781+ public bool ChangedByUser ;
781782 }
782783
783784 public void AbortBackgroundExpandingThreads ( )
@@ -789,7 +790,7 @@ public void AbortBackgroundExpandingThreads()
789790 Invalidate ( ) ;
790791 }
791792
792- internal void SetIsExpanded ( TreeNodeAdv node , bool value , bool ignoreChildren )
793+ internal void SetIsExpanded ( TreeNodeAdv node , bool value , bool ignoreChildren , bool byUser )
793794 {
794795 ExpandArgs eargs = new ExpandArgs ( ) ;
795796 eargs . Node = node ;
@@ -798,22 +799,22 @@ internal void SetIsExpanded(TreeNodeAdv node, bool value, bool ignoreChildren)
798799
799800 if ( AsyncExpanding && LoadOnDemand && ! _threadPool . IsMyThread ( Thread . CurrentThread ) )
800801 {
801- WaitCallback wc = delegate ( object argument ) { SetIsExpanded ( ( ExpandArgs ) argument ) ; } ;
802+ WaitCallback wc = delegate ( object argument ) { SetIsExpanded ( ( ExpandArgs ) argument , byUser ) ; } ;
802803 _threadPool . QueueUserWorkItem ( wc , eargs ) ;
803804 }
804805 else
805- SetIsExpanded ( eargs ) ;
806+ SetIsExpanded ( eargs , byUser ) ;
806807 }
807808
808- private void SetIsExpanded ( ExpandArgs eargs )
809+ private void SetIsExpanded ( ExpandArgs eargs , bool byUser )
809810 {
810811 bool update = ! eargs . IgnoreChildren && ! AsyncExpanding ;
811812 if ( update )
812813 BeginUpdate ( ) ;
813814 try
814815 {
815816 if ( IsMyNode ( eargs . Node ) && eargs . Node . IsExpanded != eargs . Value )
816- SetIsExpanded ( eargs . Node , eargs . Value ) ;
817+ SetIsExpanded ( eargs . Node , eargs . Value , byUser ) ;
817818
818819 if ( ! eargs . IgnoreChildren )
819820 SetIsExpandedRecursive ( eargs . Node , eargs . Value ) ;
@@ -825,7 +826,7 @@ private void SetIsExpanded(ExpandArgs eargs)
825826 }
826827 }
827828
828- internal void SetIsExpanded ( TreeNodeAdv node , bool value )
829+ internal void SetIsExpanded ( TreeNodeAdv node , bool value , bool byUser )
829830 {
830831 if ( Root == node && ! value )
831832 return ; //Can't collapse root node
@@ -857,13 +858,13 @@ internal void SetIsExpanded(TreeNodeAdv node, bool value)
857858
858859 if ( value )
859860 {
860- OnExpanded ( node ) ;
861- node . OnExpanded ( ) ;
861+ OnExpanded ( node , byUser ) ;
862+ node . OnExpanded ( byUser ) ;
862863 }
863864 else
864865 {
865- OnCollapsed ( node ) ;
866- node . OnCollapsed ( ) ;
866+ OnCollapsed ( node , byUser ) ;
867+ node . OnCollapsed ( byUser ) ;
867868 }
868869 }
869870
@@ -887,7 +888,10 @@ internal void SetIsExpandedRecursive(TreeNodeAdv root, bool value)
887888 for ( int i = 0 ; i < root . Nodes . Count ; i ++ )
888889 {
889890 TreeNodeAdv node = root . Nodes [ i ] ;
890- node . IsExpanded = value ;
891+ if ( value )
892+ node . Expand ( false ) ;
893+ else
894+ node . Collapse ( false ) ;
891895 SetIsExpandedRecursive ( node , value ) ;
892896 }
893897 }
@@ -1143,7 +1147,7 @@ private void RestoreExpandedNodes(TreeNodeAdv node, Dictionary<object, object> l
11431147 {
11441148 if ( node . Tag != null && list . ContainsKey ( node . Tag ) )
11451149 {
1146- node . IsExpanded = true ;
1150+ node . Expand ( false ) ;
11471151 foreach ( var child in node . Children )
11481152 RestoreExpandedNodes ( child , list ) ;
11491153 }
0 commit comments