再帰処理を途中で抜けるには?
- 題名: 再帰処理を途中で抜けるには?
- 著者: イナフ
- 日時: 2006/04/03 16:57:19
- ID: 15177
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 再帰処理を途中で抜けるには?
- 著者: bell
- 日時: 2006/04/03 17:10:12
- ID: 15178
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 再帰処理を途中で抜けるには?
- 著者: 夏椰
- 日時: 2006/04/03 17:42:16
- ID: 15182
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: 再帰処理を途中で抜けるには?
- 著者: さぱぁず
- 日時: 2006/04/04 9:47:24
- ID: 15196
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[2]: 再帰処理を途中で抜けるには?
- 著者: イナフ
- 日時: 2006/04/04 14:42:26
- ID: 15199
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
いつもお世話になっております。
現在ツリーの検索を行おうとしています。
数あるサンプルの中から「ツリーの全内容を列挙する」などを参考に作成しようとしているのですが
再帰処理にてうまくいかず困っております。検索ワードと前方一致するツリーのフォルダを発見後
ノードを返しているのですが、返したあとも再帰処理が走り結局ツリーの全フォルダを検索してしまいます。
また再度処理が走るために結局検索できないでいます。
検索成功後は処理を抜けノードを返したいのですが、途中で再帰処理を抜けるにはどのようにすればよろしいのでしょうか?
Private変数にて対応するしかないのでしょうか?
下記の様なソースになっております。
'ツリービューより子ノードの検索(呼び出し元ボタン)
trvItem.SelectedNode = FindNode(trvItem.Nodes, key)
trvItem.Select()
Public Function FindNode(ByVal nodes As TreeNodeCollection, ByVal key As String) As TreeNode
Dim node As TreeNode
For Each node In nodes
'前方一致検索
If Trim(node.Text).StartsWith(key) Then
return node
Else
'再起処理にて検索
FindNode(node.Nodes, key)
End If
Next
Return nothing
End Function