求教如何遍历所有控件

weixin_43936063 2023-07-12 12:09:46

 private void button1_Click(object sender, EventArgs e)
        {
            //遍历控件                                             
            Control.ControlCollection sonControls =??????????.Controls;
            {  //?????怎么填我填From1根本不对
                //遍历控件
                //Control.ControlCollection sonControls = Froms.Controls;
                //遍历所有控件  
                foreach (Control control in sonControls)
                {
                    string s = control.Name;//获得控件名称
                    string s2 = control.GetType().ToString();//得到控件的类型名称                   
                }
            };
        }

求教如何遍历所有控件

...全文
216 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

可以使用 Form 类的 Controls 属性来获取窗体中的所有控件。可以将该属性传递给遍历函数,即可遍历窗体中的所有控件。

示例代码:


```java
private void button1_Click(object sender, EventArgs e)
{
    //遍历控件                                             
    Control.ControlCollection sonControls = this.Controls;
    {  
        //遍历控件
        //Control.ControlCollection sonControls = Froms.Controls;
        //遍历所有控件  
        foreach (Control control in sonControls)
        {
            string s = control.Name;//获得控件名称
            string s2 = control.GetType().ToString();//得到控件的类型名称                   
        }
    };
}


需要注意的是,在遍历控件时,可能会有一些控件包含子控件。如果需要遍历所有子控件,可以使用递归的方式遍历。示例代码如下:

private void TraverseControls(Control control)
{
string s = control.Name;//获得控件名称
string s2 = control.GetType().ToString();//得到控件的类型名称

foreach (Control sonControl in control.Controls)
{
    TraverseControls(sonControl);
}

}

private void button1_Click(object sender, EventArgs e)
{
TraverseControls(this);
}

```

该示例代码会遍历窗体中的所有控件,包括子控件和孙子控件等。在遍历控件时,可以根据需要进行相应的操作。

IT·陈寒 2023-07-12
  • 打赏
  • 举报
回复

private void TraverseControls(Control.ControlCollection controls)
{
foreach (Control control in controls)
{
// 处理当前控件
string controlName = control.Name;
string controlType = control.GetType().ToString();

    // 如果当前控件包含子控件,则递归遍历子控件
    if (control.Controls.Count > 0)
    {
        TraverseControls(control.Controls);
    }
}

}

private void button1_Click(object sender, EventArgs e)
{
TraverseControls(this.Controls);
}

代码中,TraverseControls 方法接受一个 Control.ControlCollection 参数,用于遍历该集合中的控件。在每次遍历时,可以处理当前控件的相关逻辑,如获取控件的名称和类型等。如果当前控件还包含子控件,就使用递归方式调用 TraverseControls 方法,继续遍历子控件的集合。

在按钮的点击事件处理方法 button1_Click 中,调用 TraverseControls 方法,并传递窗体的 Controls 集合作为参数,即可遍历整个窗体中的所有控件。

33

社区成员

发帖
与我相关
我的任务
社区描述
让技术改变世界,让爱好进行到底。
c#后端.net 技术论坛(原bbs) 江苏省·南京市
社区管理员
  • 数智前沿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧