2009-05-05 72 views

回答

2

利用Enumerable.OfType<T>擴展方法:

...Form.Controls.OfType<MyControlBase>()... 

要執行此遞歸看到other answer:創建行走控制樹創建一個列表,你再申請LINQ運營商的迭代器。

+0

我想我在尋找嵌套在另一個控件。當我嘗試這個時,它什麼都不返回。 – Slim 2009-05-06 03:36:42

2

假設你有遞歸得到所有的控制的方法,具體如下:

public static IEnumerable<Control> GetControls(Control form) { 
    foreach (Control childControl in form.Controls) { // Recurse child controls. 
     foreach (Control grandChild in GetControls(childControl)) { 
      yield return grandChild; 
     } 
     yield return childControl; 
    } 
} 

然後,你可以這樣做:

var controls = GetControls(form).OfType<SomeControlBase>();