foreach在SomePanel.Controls中控制ctrl不会获得所有控件

aro*_*ron 4 c# asp.net controls textbox

我有一个面板,里面有一堆标签和文本框.

代码:

foreach (Control ctrl in this.pnlSolutions.Controls)
Run Code Online (Sandbox Code Playgroud)

似乎只能在面板和2升内找到html表.但它没有得到html表中的文本框.有没有一种简单的方法来获取面板内的所有控件而不管嵌套

谢谢!

Ron*_*lic 8

这是一个懒惰的解决方案:

public IEnumerable<Control> GetAllControls(Control root) {
  foreach (Control control in root.Controls) {
    foreach (Control child in GetAllControls(control)) {
      yield return child;
    }
  }
  yield return root;
}
Run Code Online (Sandbox Code Playgroud)

还要记住,某些控件会保留项目的内部集合(例如ToolStrip),但这不会枚举这些项目.