예제 #1
0
        private void findDialog1_SearchRequested(object sender, SearchEventArgs e)
        {
            if (e.FirstSearch)
            {
                this.originalSelectionStart = base.SelectedNode;
            }
            TreeNode selectedNode = base.SelectedNode;

            SBNTreeView.TreeSearchState treeSearchState = SBNTreeView.TreeSearchState.NotStarted;
            this.SubSearch(e.SearchRegularExpression, base.Nodes, selectedNode, this.originalSelectionStart, ref treeSearchState);
            if (treeSearchState == SBNTreeView.TreeSearchState.MatchMade)
            {
                e.Successful = true;
            }
            else if (treeSearchState != SBNTreeView.TreeSearchState.HitEndNode)
            {
                e.RestartedFromDocumentTop = true;
                treeSearchState            = SBNTreeView.TreeSearchState.Started;
                this.SubSearch(e.SearchRegularExpression, base.Nodes, null, this.originalSelectionStart, ref treeSearchState);
                if (treeSearchState == SBNTreeView.TreeSearchState.MatchMade)
                {
                    e.Successful = true;
                }
            }
        }
예제 #2
0
 private void SubSearch(Regex regularExpression, TreeNodeCollection treeNodeCollection, TreeNode startAfterNode, TreeNode stopAtNode, ref SBNTreeView.TreeSearchState state)
 {
     foreach (TreeNode treeNode in treeNodeCollection)
     {
         if (state == SBNTreeView.TreeSearchState.Started)
         {
             if (treeNode == stopAtNode)
             {
                 state = SBNTreeView.TreeSearchState.HitEndNode;
                 break;
             }
             if (this.nodeSearcher(treeNode, regularExpression))
             {
                 if (base.HideSelection)
                 {
                     this.findDialog1.Deactivate += new EventHandler(this.RestoreHideSelection);
                     base.HideSelection           = false;
                 }
                 base.SelectedNode = treeNode;
                 base.SelectedNode.EnsureVisible();
                 state = SBNTreeView.TreeSearchState.MatchMade;
                 break;
             }
         }
         if (startAfterNode == treeNode)
         {
             state = SBNTreeView.TreeSearchState.Started;
         }
         this.SubSearch(regularExpression, treeNode.Nodes, startAfterNode, stopAtNode, ref state);
         if (state == SBNTreeView.TreeSearchState.HitEndNode)
         {
             break;
         }
         if (state == SBNTreeView.TreeSearchState.MatchMade)
         {
             break;
         }
     }
 }