2010-05-14 140 views
0

我想枚舉通過頁面的所有控件,但我可以找到的是thePage.FindControl(string)和.Controls屬性不具有我在頁面上的控件。任何人都知道如何枚舉通過web窗體頁面的所有控件,這有可能嗎?

回答

2

以下應該枚舉所有的子控件。

IEnumerable<Control> GetAllChildControls(ControlCollection controls) 
{ 
    foreach(Control c in controls) 
    { 
    yield return c; 

    if(c.Controls.Count > 0) 
    { 
     foreach(Control control in GetAllChildControls(c.Controls)) 
     { 
     yield return control; 
     } 
    } 
    } 
} 
1

Controls屬性只包含當前控件的直接子項。如果要遍歷頁面上的所有控件,則必須遍歷頁面的子元素,然後遞歸遍歷子元素,然後再遍歷子元素的孩子等等。遞歸方法是實現這一點最直接的方法。