通过C#递归通知子控件

4 c# controls winforms

我有一个窗体MainForm,它是一个包含许多子控件的Windows窗体表单.我想调用一个函数MainForm来通知它的所有孩子.Windows窗体表单是否提供了执行此操作的方法?我玩更新,刷新和无效,但没有成功.

Mus*_*sis 6

foreach (Control ctrl in this.Controls)
{
    // call whatever you want on ctrl
}
Run Code Online (Sandbox Code Playgroud)

如果要访问表单上的所有控件,以及表单上每个控件的所有控件(依此类推,递归),请使用如下函数:

public void DoSomething(Control.ControlCollection controls)
{
    foreach (Control ctrl in controls)
    {
        // do something to ctrl
        MessageBox.Show(ctrl.Name);
        // recurse through all child controls
        DoSomething(ctrl.Controls);
    }
}
Run Code Online (Sandbox Code Playgroud)

...通过最初传入表单的Controls集合调用,如下所示:

DoSomething(this.Controls);
Run Code Online (Sandbox Code Playgroud)