用C#如何遍历一个窗体中的某一种控件

C# 遍历控件,遍历某EXE中的所有窗体以及窗体上的控件 大家好,我是赤道上的小熊,最近在做一个二开设计平台,要实现遍历某EXE中的所有窗体以及窗体上的控件,下面的实现方式不仅可以找到窗体中已经存在的控件,通过程序动态创建的控件也可以遍历到(例如:Button button2 = new Button()),希望对大家所有帮助。 PS:该实现方式必须和要寻找的窗体在同一项目中 //获取EXE中的控件值 string strRes ... 阅读详情

/* 作者:耿奕廷    版权所有,转载时请注明出处及作者    */

 

假设我要遍历所有的Label控件.我们知道一个窗体中的所有控件都是Form.Controls中的成员,想要得到窗体中的所以成员,可以用foreach来遍历Controls属性中的对象。注意,Controls属性中包含的对象都是以Control基类形式存在的,这就是说我们只能用foreach(Control temp in this.Controls)来遍历。对于任何一个由Control派生来的类,或者说是所以控件,可以用其 GetType()函数来得到控件的类型。如果要判判断具体类型需要将类型转为字符串:tempControl.GetType().ToString()    它得到的是一个控件的完整名字,如:System.Windows.Forms.Label。

现在我们考虑另一种情况,在控件中,有一些控件有子控件如 Panel ,GroupBox,而这些控件中又可能包含其它的Panel,GroupBox,所以我们必须判断出这些“母控件”,并用递归方法对其中的控件遍历!

代码如下,在窗体中至少有一个LISTBOX和 一个按钮,注意每个函数接受的参数类型。

 

private void GetLabeinP(Panel temp)     //对panel进行遍历的函数
  {
   foreach(Control tempcon in temp.Controls)
   {
    switch(tempcon.GetType().ToString())
    {
     case "System.Windows.Forms.Label":
      this.listBox1.Items.Add(tempcon.Name);
      break;
     case "System.Windows.Forms.Panel":
      this.GetLabeinP((Panel)tempcon);
      break;
     case "System.Windows.Forms.GroupBox":
      this.GetLabeinG((GroupBox)tempcon);
      break;

    }
     
   }
  }
  private void GetLabeinG(GroupBox temp)   //对GroupBox遍历
  {
   foreach(Control tempcon in temp.Controls)
   {
    switch(tempcon.GetType().ToString())
    {
     case "System.Windows.Forms.Label":
      this.listBox1.Items.Add(tempcon.Name);
      break;
     case "System.Windows.Forms.Panel":
      this.GetLabeinP((Panel)tempcon);
      break;
     case "System.Windows.Forms.GroupBox":
      this.GetLabeinG((GroupBox)tempcon);
      break;

    }
     
   }
  }

  private void button1_Click_1(object sender, System.EventArgs e)  //按钮的代码
  {
   this.listBox1.Items.Clear();
   foreach(Control tempcon in this.Controls)
   {
    switch(tempcon.GetType().ToString())
    {
     case "System.Windows.Forms.Label":
      this.listBox1.Items.Add(tempcon.Name);
      break;
     case "System.Windows.Forms.Panel":
      this.GetLabeinP((Panel)tempcon);
      break;
     case "System.Windows.Forms.GroupBox":
      this.GetLabeinG((GroupBox)tempcon);
      break;

    }
     
   }  

  
  }

 

获取Winform窗体或Panel下包含的所有控件、根据控件名称获取指定控件 一、实现效果 在 Winform中窗体(Form)就像一个容器,可以包含所有的控件(比如:panel、button、textedit等控件);如果把窗体看做是 Winform 中最大的容器,那么Panel可以看做第二,Panel控件则是专门用于界面的排版布局,相当于 Web 开发中的层(div),几乎所有控件都可以包含到 Panel 中,包括窗体。 ①获取到指定窗体下的所有控件; ②获取到指定Panel下的所有控件; ③获取到窗体下的所有TextEdit类型控件; ④根据控件名称获取到该控.. 阅读详情

相关推荐

Diffix3D+复现

上下载模型,将其放在一个目录中,并将目录名填在demo代码中from_pretrained的cache_dir参数里。目录结构应该是"<PATH>/nvidia/difix/…给的requirements文件中pytorch和xformers的版本没有指定,这里测试过以下版本,可以成功运行。将readme中的demo代码新建一个python脚本复制进去,然后将脚本放在src目录中运行。如果遇到网络问题无法加载huggingface上的预训练模型,可以手动从。如果出现,以下错误重新。

NeverMakeIt的博客 1087

wpf中遍历界面控件的方法

摘要://////遍历界面中的所有控件//////privatevoidSetNotEditable(UIElementCollectionuiControls){foreach(UIElementelementinuiControls){if(elementisTextBox){(elementasT

weixin_41883890的博客 1439

5.44GHz超高精度!STM32G474的HRTIM时钟配置避坑指南

本文深入解析STM32G474内置高分辨率定时器的时钟配置要点,帮助工程师避开常见陷阱。文章详细阐述了从系统时钟到5.44GHz等效时基的路径,重点分析了预分频器乘法器、周期计算溢出、影子寄存器同步等关键配置,并结合实测波形对比,确保HRTIM在电机控制、数字电源等精密应用中发挥极限性能。

book8的博客 524

WPF 随记一

WPF笔记

Wanderer_Night的博客 394

线结构光三维重建(二):光平面标定与激光轮廓提取的实战优化

本文深入探讨了线结构光三维重建中的光平面标定与激光轮廓提取两大核心环节的实战优化。详细介绍了从棋盘格标定板法到自动化高鲁棒性标定的流程优化,并分享了针对复杂工业场景(如低对比度、高反光表面)的激光轮廓提取组合策略,旨在提升三维重建系统的整体精度与稳定性。

weixin_29057237的博客 333

非sudo用户如何安全使用Docker:Rootless模式实战指南

Docker Rootless模式是一种基于Linux用户命名空间(userns)的容器运行时安全机制,它通过UID/GID映射、fuse-overlayfs文件系统和slirp4netns网络栈,在不提升权限的前提下实现容器隔离。其核心原理是将容器内root身份映射为宿主机非特权用户,从而规避docker组等价root的安全风险。相比传统root模式,Rootless在权限控制、逃逸防护和多租户隔离方面具备天然优势,适用于CI/CD流水线、Kubernetes边缘节点及受限生产环境。本文聚焦无sudo权限

weixin_30274627的博客 351

WinForm递归遍历控件

public static void GetControl(Control.ControlCollection ctc)         {             foreach (Control ctl in ctc)             {                 //当窗体上的控件有子控件时,需要用递归的方法遍历,才能全部列出窗体上的控件              

Zh_GY的专栏 2362

机器视觉--线扫相机触发:从原理到选型,构建高效成像方案

本文深入解析线扫相机触发技术,从硬件编码器触发到软件触发方案,提供详细的性能对比和选型指南。通过实际案例展示如何构建高效成像方案,特别适合机器视觉领域需要精准控制的应用场景,如工业检测和自动化生产线。

weixin_42531886的博客 418

C#中如何遍历窗体中所有控件

C#中如何遍历窗体中所有控件 C#中如何遍历窗体中所有控件 今天项目中 有用到过去查找窗体中控件,在网上借鉴了别人的文章后使用的手法后,代码简洁高效,觉得自己又收获了好多。 之前想到的 利用窗体的Form里面的Control方法去查找控件,但是这样会带来一个问题,如果有多个窗体怎么办? 难道每个窗体自己都要手动加吗? // An highlighted block var foo = 'bar';...

Martian_chili的博客 4129

【嵌入式】AMIC和DMIC(什么是数字麦和模拟麦)

最近在做一个关于MIC的项目,同事不太清楚AMIC和DMIC的区别,又有高手详细解释了其原理,在此整理记录一下,方便后续查阅。

Bigan(安)的博客 8551

当启动容器的时候提示:exec format error?如何解决问题

Docker容器出现"exec format error"的主要原因是架构不兼容(如ARM设备运行x86镜像)。解决方案包括:1)匹配镜像与宿主机架构;2)构建时指定平台;3)安装QEMU模拟器;4)修复文件权限和格式;5)验证基础镜像兼容性。排查流程应从检查架构匹配开始,逐步验证权限、解释器和换行符等问题。建议优先使用多架构镜像,构建时明确指定平台,并使用buildx工具生成多平台镜像。调试时可进入容器手动验证文件格式和兼容性。

weixin_39291964的博客 2720

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

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

一路采撷 2221

基于matlab的LFM脉冲压缩仿真

传统雷达测距是通过发射点频脉冲串实现的,通过发射脉冲与回波的时延确定目标的距离。此类方法易于实现,对接收机的要求较低。一般要获取更好的距离分辨力,需要增加发射信号的带宽,对于点频脉冲信号即需要减小发射脉冲宽度;而为获取更大的探测距离,提升雷达威力,则需要发射更大占空比的脉冲串。由于点频信号的时宽带宽积约等于1,因此不能同时增加信号的时宽和带宽。若要保持距离分辨力,增大占空比就需要减少雷达的脉冲重复周期(PRT)。这样会减小雷达的无模糊探测距离,也会造成目标回波频繁被遮挡,损失雷达威力。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 1771

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

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

fangyuan621的专栏 1155

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

C# WinForm遍历窗体控件的3种方法

这篇文章主要介绍了C# WinForm遍历窗体控件的3种方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下 目录 1.循环遍历 2.递归遍历 3.使用反射 1.循环遍历 1 2 3 4 5 6 7 8 private void GetControls(Control fatherControl) { Control.ControlCollection sonControls...

fangyuan621的专栏 5380

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Java抽象工厂模式实战:跨平台GUI组件与DDD聚合根创建

在软件工程中,设计模式是解决常见设计问题的可复用方案,其中创建型模式专注于对象创建机制。抽象工厂模式作为一种重要的创建型模式,其核心原理是提供一个接口来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。这一机制的技术价值在于实现了客户端代码与具体产品实现的解耦,保证了产品族的一致性,并支持开闭原则,使得系统更容易扩展新的产品族。其典型应用场景包括跨平台UI开发(如Windows/macOS GUI组件)、数据库访问层适配(如MySQL/Oracle驱动族)以及需要风格统一的产品套件(如现代/古典风格家

weixin_34220179的博客 388

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

c#遍历form窗体上的所有控件

//遍历Form上的所有控件foreach (System.Windows.Forms.Control control in this.Controls){ if (control is System.Windows.Forms.Button) { System.Windows.Forms.Button btn = (System.Windows

Cabble_II的专栏 1万+

C# 遍历窗体控件顺序问题

今天在做C# winform 窗体控件遍历时遇到控件顺序的问题,也就是控件被遍历的先后问题。实际情况如下所述。 窗体界面如下: 界面构成是:主界面有一个 Panel (Panel_14),Panel_14上面有13个子 Panel(Panel_1 ~ Panel_13),每个子 Panel 上有10个 TextBox,为了便于操作TextBox中的数据需要将每个子Panel中的TextBo...

weixin_30432579的博客 974

如何遍历一个窗体中的某一种控件 c#实现

 假设我要遍历所有的Label控件.我们知道一个窗体中的所有控件都是Form.Controls中的成员,想要得到窗体中的所以成员,可以用foreach来遍历Controls属性中的对象。注意,Controls属性中包含的对象都是以Control基类形式存在的,这就是说我们只能用foreach(Control temp in this.Controls)来遍历。对于任何一个由Control派

vsweaver的专栏 1681
上一篇: C#常用开源类库收集
下一篇: xp使用4G内存方法
haoxingfengcrazy
博客等级 码龄20年 156粉丝 27原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值