C#中如何遍历窗口中的控件!

C#控件自适应,窗口自动铺满屏 private static void GetMainFromSize_Init(Form MyForm)//获取初始化对话框参数。private static void GetMainFromSize_Curr(Form MyForm)//获取当前对话框参数。public static void RegisterFormControl(Form MyForm)//注册对话框所以控件。private static void FormControlList(Control item)//递归遍历控件。 阅读详情
private void button1_Click(object sender, EventArgs e)
              {
                  listBox1.Items.Clear();
                  GetControl(Controls);
              }
        private void GetControl(Control.ControlCollection ctc)
              {
             foreach (Control ct in ctc)
                  {
                   //调用AddControlInofToListBox方法获取控件信息
                      AddControlInofToListBox(ct);
                 //C#只遍历窗体的子控件,不遍历孙控件
                    //当窗体上的控件有子控件时,需要用递归的方法遍历,才能全部列出窗体上的控件

                 if (ct.HasChildren)
                      {
                          GetControl(ct.Controls);
                      }
                  }
              }
        private void AddControlInofToListBox(Control ct)
              {
            switch (ct.GetType().Name)
                  {
                 //如果是ListBox、CheckBox、Button
                case "ListBox":
                case "GroupBox":
                case "Button":
                          listBox1.Items.Add("控件名:" + ct.Name);
                    break;
                 //如果是CheckBox
                case "CheckBox":
                    if (((CheckBox)ct).Checked)
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:是");
                         //((CheckBox)ct).Checked = false;
                          }
                    else
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:否");
                         //((CheckBox)ct).Checked = true;
                          }
                    break;
                 //如果是RadioButton
                case "RadioButton":
                     RadioButton rdb = (RadioButton)ct;
                    if (rdb.Checked)
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:是");
                              //rdb.Checked = false;
                          }
                    else
                          {
                              listBox1.Items.Add("控件名:" + ct.Name + ",是否选中:否");
                              //rdb.Checked = true;
                          }
                    break;
                //其它值
                 default:
                          listBox1.Items.Add("控件名:" + ct.Name + ",值:" + ct.Text);
                     break;
                  }
              }

       //遍历groupBox1控件的子控件
        private void button2_Click(object sender, EventArgs e)
              {
                  listBox1.Items.Clear();
               //可以共用上面的,遍历窗体控件的方法
                 //只是参数由Controls改为groupBox1.Controls

                 GetControl(groupBox1.Controls);
              }
-------------------------------------

foreach(TextBox    t    in    this.Controls)   
   {   
   MessageBox.Show(t.Text);   
   }

for(int    i=0;this.Controls.Count-1;i++)   
       if(this.Controls[i]    is    TextBox)   
           this.Controls[i].Text="";

///    <summary>   
   ///    设置此界面中控件的某些属性   
   ///    </summary>   
   ///    <param    name="ctl"></param>   
   public    void    Set_Controls(Control    ctl)   
   {   
   //当控件没有子控件时   
   if    (    !ctl.HasChildren)   
   {   
   switch(ctl.GetType().ToString())   
   {   
   case    "System.Windows.Forms.Label":   
   break;   
   case    "System.Windows.Forms.Button":   
   break;   
   case    "System.Windows.Forms.TextBox":   
   break;   
   case    "System.Windows.Forms.ListView":   
   break;   
   case    "System.Windows.Forms.GroupBox":   
   break;   
   case    "System.Windows.Forms.ComboBox":   
   break;   
   case    "System.Windows.Forms.ImageList":   
   break;   
   case    "System.Windows.Forms.DataGrid":   
   break;   
   case    "System.Windows.Forms.MainMenu":   
   break;   
   case    "System.Windows.Forms.TreeView":   
   break;   
   }   
   }   
   else    //当控件有子控件时   
   {   
   int    i    =    0;   
   while    (    i    <    ctl.Controls.Count    )   
   {   
   Set_Controls(    ctl.Controls[i]    );   
   i    ++;   
   }   
   }   
   }   
    
   你调用时,可以这样用:   
   Set_Controls(this);

private    void    button1_Click(object    sender,    System.EventArgs    e)   
   {   
   foreach(TextBox    s    in    this.Controls    )   
   {   
   MessageBox.Show    (s.ToString());   
    
    
   }   
   }

 

foreach(Control    c    in    Controls)   
   {   
       if(c    is    TextBox)   
           MessageBox.Show("good");   
   }

清空C#中的控件 阅读详情

相关推荐

MFC窗口风格 WS Window Styles中文说明及在c#中的定义使用

窗口风格(Window style)WS_BORDER 有边框窗口 WS_CAPTION 必须和WS_BORDER风格配合,但不能与WS_DLGFRAME风格一起使用。指示窗口包含标题要部分。 WS_CHILD 说明窗口为子窗口,不能应用于弹出式窗口风格(WS_POPUP)。 WS_CHILDWINDOW 同WS_CHILD。 WS_CLIPCHILDREN 绘制父窗口时

无知人生,记录点滴 6769

C#——遍历控件

C#控件的遍历

Guarder_7的博客 2733

C# Win32 HWND控件遍历:从窗口名定位到子控件枚举的完整实践

HWND(窗口句柄)是Windows GUI自动化中最底层、最稳定的操作对象,其本质是操作系统内核维护的窗口实例标识符,不依赖.NET控件树或进程模块加载状态。通过FindWindow与EnumChildWindows组合调用,可实现跨框架(WinForms/WPF/Delphi/Electron)的UI元素发现,原理基于Win32窗口类(如Button、Edit)和父子窗口层级关系,具备轻量、免权限、抗混淆等技术优势。该方案广泛应用于UI测试脚本、工业软件集成、无障碍辅助工具及黑盒系统操作等工程场景,尤其

weixin_28831341的博客 214

C#遍历窗体所有控件或某类型所有控件

//遍历窗体所有控件, foreach (Control control in this.Controls) { //遍历后的操作... control.Enabled = false; } 遍历某个panel的所有控件 foreach (Control control in this.panel4.Controls) { control.Enabled = false; } 遍历所有TextBox类型控件或者所有DateTimePicker控件 foreac..

fangyuan621的专栏 3775

C#通过窗口名获取程序所有控件句柄的完整实现

在Windows桌面应用开发中,窗口句柄是跨进程界面自动化的核心入口。很多老牌工控软件、组态工具不提供SDK,但其窗体结构相对固定,开发者可以利用Win32 API中的FindWindow函数,通过窗口标题定位顶层窗口句柄,再借助EnumChildWindows配合递归遍历,枚举出窗口内的所有子控件句柄。这一机制不依赖进程ID,也不需要关心目标程序的语言,只需要一个稳定的窗口名即可完成对按钮、文本框、下拉框等控件的精准定位。该技术在工业上位机自动化、桌面工具集成、界面数据采集等场景中非常实用。本文从API原

weixin_33393017的博客 219

C# Winform遍历控件(窗体、Panel的子控件)Controls

C# Winform遍历控件(窗体、Panel的子控件)Controls ,适合在桌面应用程序中快速上手及运用

C# winform 容器中控件遍历

【代码】C# winform 容器中控件遍历。

qq_38760163的博客 942

手把手教你:基于STM32H7自制飞控,如何从零开始移植PX4固件(附避坑指南)

本文详细介绍了如何基于STM32H7自制飞控板并移植PX4固件的完整流程,包括硬件设计、开发环境搭建、关键配置文件移植、驱动开发与适配等关键步骤。特别针对PX4-AutoPilot的移植过程提供了实用技巧和避坑指南,帮助开发者高效完成飞控系统开发。

weixin_30271335的博客 143

C# 获取指定页面所有的控件及嵌套控件

百度了很多方法都无法正确解析出多层嵌套的xml文件,网上很多方法都仅适用于单层解析。于是参考了网上的方法并进行改进,具体方法如下:

weixin_48858524的博客 2992

尚硅谷 Vue2.0 + Vue3.0 入门到精通教程学习笔记 (一)

本文为总结尚硅谷Vue2.0+Vue3.0 的学习笔记系列的第一章——Vue的核心,包含Vue简介、模板语法、数据绑定、MVVM模型、事件处理,计算属性与监视、class与style绑定、列表渲染、过滤器、内置指定和自定义指令以及Vue生命周期等知识点

weixin_44566194的博客 3655

ABAP内表数据导出Excel:OLE、ALV与GUI_DOWNLOAD方案全解析

在企业级应用开发中,数据导出是连接后台系统与前端业务分析的关键桥梁。其核心原理是将结构化数据转换为通用文件格式,以实现跨平台的数据交换与可视化。从技术价值看,一个健壮的导出功能能显著提升数据处理效率,减少人工干预,是衡量系统实用性的重要指标。常见的应用场景包括报表生成、数据交接和临时数据提取。本文聚焦于SAP ABAP开发领域,深入探讨如何将内表数据高效、稳定地导出至Excel,涵盖了OLE自动化、ALV标准导出以及基于CL_GUI_FRONTEND_SERVICES与GUI_DOWNLOAD的通用方案,并

weixin_32715349的博客 320

[Gabriel的专栏] 用C#如何遍历一个窗体中的某一种控件

用C#如何遍历一个窗体中的某一种控件 document.title="用C#如何遍历一个窗体中的某一种控件 - "+document.title/* 作者:耿奕廷    版权所有,转载时请注明出处及作者    */假设我要遍历所有的Label控件.我们知道一个窗体中的所有控件都是Form.Controls中的成员,想要得到窗体中的所以成员,可以用foreach来遍历Controls属性

一路采撷 2221

SpringBoot3项目实战:5分钟搞定Knife4j接口文档配置(含中文版设置)

本文详细介绍了在SpringBoot3项目中快速整合Knife4j接口文档工具的实战教程。内容涵盖核心依赖选择、基础配置、中文界面设置、API信息深度定制以及生产环境安全策略,帮助开发者高效构建专业、可交互的API文档门户,提升团队协作效率。

weixin_29204121的博客 256

C# WinAPI 遍历方式查找窗口,子窗口的控件句柄

Win32 API查找子窗口或控件的句柄

baishi1987的专栏 3508

电磁场可视化

电磁场可视化 如题,做了电磁场可视化这么久了,也是颇有些心得了,简单描述一下怎么做这个项目的。 开始时是从最基本的OpenGL开始做的,必不可少的翻了许多的文献,后来是直接在unity中做,发现效果挺好,而且可控性强好多。反复琢磨后,发现可视化的渲染,有几种思路,第一就是用linerender,画线的方法,另一种就是用shader。 第一种我通过unity自带的linewave插件可以做到 详细的就是,linewave插件可以轻松画出曲线等,并且可以添加碰撞,控制频率幅度长度等一切的条件数值,而且令人惊喜

weixin_43979140的博客 1670

静态分析工具COBOT与Testbed对比

Testbed为规则检查工具的代表,市场占有量非常大,但随着时间的推移,大家从规则匹配转向了用静态分析工具检查Bug,所以规则检查型工具占有量比开始时候已经减少,但仍有一些比较落后的单位还在继续采购此类工具。3、通过对开源工程的测试,进行误漏报率的对比,发现COBOT(库博)的误漏报率相比Testbed较低,因COBOT主打国内市场,在众多军工单位进行大量试用及使用,吸取了众多单位的意见和建议,更加符合国内军工单位的使用习惯及测试要求。4、此外库博在功能上还可以进行计划任务,检测队列,检测并发的功能支持。

chengoodflower的博客 2054

Winform遍历窗口的所有控件(几种方式实现)

扣扣技术交流群:460189483 C#遍历窗体所有控件或某类型所有控件 //遍历窗体所有控件, foreach (Control control in this.Controls) { //遍历后的操作... control.Enabled = false; } 遍历某个panel的所有控件 foreach (Control control in this.panel...

u014453443的博客 1万+

【Agent】AI Agent架构趋势及演进

本文系统介绍了AI Agent架构的发展趋势和技术框架,涵盖单Agent与多Agent系统设计、提示词工程与上下文管理、SpringAI开发框架等关键技术。重点阐述了AI原生应用参考架构,包括Nacos配置管理、Higress AI网关、RocketMQ会话状态管理等核心组件解决方案。同时深入探讨了AI应用可观测性体系,包含OpenTelemetry全链路追踪、关键指标监控以及基于LoongSuite开源工具的数据采集评估方法,为构建高效可靠的AI应用提供了全景式技术参考。

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 1104

window api遍历窗口及窗口下面的控件

<br />using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Runtime.InteropServices; namespace Windows

aierda的专栏 1万+

DDS协议--[第一章][概述]

Data Distribute Service,数据分发服务:数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。DDS集成系统中的各个组件,提供低延迟数据连接、高可靠性以及高可扩展体系结构,以适应商业级物联网(IoT)应用程序的需求。

qq_41816308的博客 1152

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

遍历指定程序名窗口上的所有控件

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using ...

weixin_30858241的博客 837

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

c++ 遍历窗口控件_【自学C#】|| 笔记 31 控件,列表

一、CheckedListBox:复选列表框控件复选列表框显示的效果与复选框类似,但在选择多个选项时操作比一般的复选框更方便。1.例使用复选列表框完成选购水果的操作。根据题目要求,创建一个名为 CheckedListBox 窗体,在复选列表框中添加 6 种水果, 单击“购买”按钮,弹出消息框显示购买的水果种类。步骤如下: 1)首先是创建一个w...

weixin_35489715的博客 787

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C#中窗口应用程序界面拉伸改变界面中各个控件的大小

对于C#写的窗口应用程序,会出现拉伸要放大的情况,但是拉伸之后 组件的大小以及位置都不会改变,这些有点难了 对于上述的问题,觉得有两种解决办法。 1.设置所写的窗口应用程序不可拉伸(固定大小) 即固定住窗口应用程序的大小 在组件form的属性中修改为 FormBorderStyle为None、Fixed3D、FixedDialog或者FixedToolWindow即可,这样就可以固定住界...

Demo.demo的博客 4185

C#控件大小随窗体大小等比例变化

相信很多博友在开发初次接触学习C# winForm时,当窗体大小变化时,窗体内的控件并没有随着窗体的变化而变化,最近因为一个项目工程的原因,也需要解决这个问题。通过查阅和学习,这个问题得到了解决,或许不是很好的处理方式,但是也值得借鉴。。。 下面我将建立一个Demo来大概解释下这个方法的实现:(注:我使用的是的VS2010) Step1:打开VS2010,建立一个C#Winform项目(注:这...

u013040887的博客 3112

根据获取的窗口句柄遍历窗口Edit控件

网上说遍历窗口控件有两种方法: 1),使用EnumChildWindows,没有深究, 学习网址如下:http://blog.sina.com.cn/s/blog_60ac1c4b010116uj.html 2),使用::FindWindowEx和GetWindow组合 下面只说第二种方法, 首先根据标题获取窗口的句柄, HWND hWnd=::FindWindow(NULL,...

weixin_30455067的博客 1657

c# 遍历 根据控件名获取控件实例

本文介绍了在C#中根据控件名称获取控件实例的方法。对于WinForms,可使用Control.Find方法或递归遍历容器控件;对于WPF,推荐使用LogicalTreeHelper.FindLogicalNode或递归遍历逻辑树。两种框架都提供了直接查找和递归查找两种方式,开发者可根据项目类型选择合适方法。文章包含具体代码示例,展示了如何在不同场景下实现控件查找功能。

weixin_40029679的博客 411
上一篇: C# 字符串格式化大全
下一篇: .net 2.0(c#)下简单的FTP应用程序
[大楚]
博客等级 码龄25年 13粉丝 7原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值