Windowsフォーム上のすべてのコントロールを列挙するには?(非再帰版)
Windowsフォーム上のすべてのコントロールを列挙するには?
http://www.atmarkit.co.jp/fdotnet/dotnettips/224controls/controls.html
(あ、別に全てのコントロールをどうこうしたいワケじゃないので悪しからず;)
末尾再帰最適化しない処理系(してくれるの殆どない)では、自己再帰書くと簡単にスタックオーバーフローできますよね?
といいますか、ただのn分木探索の例として。。
' List lに詰め込む例 Dim c As Control = Me Dim l As New List(Of Control) Dim i As Integer = 0 l.Add(c) While i < l.Count For Each c1 As Control In l(i).Controls l.Add(c1) Next i += 1 End While
' 単にトラバースするだけ例 Dim c As Control = Me Dim l As New LinkedList(Of Control) l.AddFirst(c) While 0 < l.Count For Each c1 As Control In l.First.Value.Controls Debug.Print(c1.Name) l.AddLast(c1) Next l.RemoveFirst() End While
えーと、2コ目がLinkedListな理由は分かりますよね?