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

转载 2006年05月26日 11:04:00

 

假设我要遍历所有的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;

    }
     
   }  

  
  }

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

private void button1_Click(object sender, EventArgs e)              {                  listBox1.Item...
  • DaChu
  • DaChu
  • 2008年03月02日 13:42
  • 7976

遍历对话框中的控件

在主对话框的cpp文件中 找到OnInitDialog()函数 我自己对话框的命名下额外代码处添加的的遍历代码如下 BOOL CMFCApplication2Dlg::OnInitDial...
  • wansichao
  • wansichao
  • 2015年01月07日 21:50
  • 547

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

如果我要遍历所有的Label控件.我们知道一个窗体中的所有控件都是Form.Controls中的成员,想要得到窗体中的所以成员,可以用foreach来遍历Controls属性中的对象。注意,Contr...
  • sl1990129
  • sl1990129
  • 2017年09月19日 20:27
  • 257

ASP.NET(C#)中遍历所有控件

http://www.cnitblog.com/ffan/archive/2005/07/30/1193.html
  • neusoft06
  • neusoft06
  • 2014年12月18日 11:23
  • 913

android 遍历所有控件

private void getButtons(ViewGroup viewGroup) { if (viewGroup == null) { return; } int count...
  • zahuopuboss
  • zahuopuboss
  • 2015年11月19日 18:14
  • 4103

C#如何控制另一个窗体上的控件的属性

C# 如何从一个窗口的控件控制另一个窗体上的控件的属性牛人总是在的1楼回答,楼主是不是有没有看懂。将窗体对象作为一个参数传给另外一个窗体的构造方法尽量减少数据库的操作,数据库操作完毕后要断开连接,写个...
  • hb0523
  • hb0523
  • 2010年12月12日 22:42
  • 2087

Winform遍历窗口的所有控件(两种方式)

博文主要以下图中的控件来比较这两种方式获取控件的方式: 1. 最简单的方式: private void GetControls1(Control fatherControl) { Contro...
  • softimite_zifeng
  • softimite_zifeng
  • 2017年01月09日 15:04
  • 3097

如何在ASP.NET下遍历指定页面上所有控件

public static void ClearAllContent( ) /// /// 清空指定页面上所有的控件内容,包括TextBox,CheckBox,CheckBoxList,RadioB...
  • jelink
  • jelink
  • 2006年08月30日 14:52
  • 810

ASP.NET遍历控件的几种方法

 方法一:javascript法function btnClear(){for(i=0;i{e=document.forms[0].elements[i];if(e.type==text||e.typ...
  • jiashu912387
  • jiashu912387
  • 2009年04月01日 09:07
  • 2980

c#WinForm下窗体权限设计(遍历菜单下的所有菜单及所有form、form中的控件)

c#WinForm下窗体权限设计(遍历菜单下的所有菜单及所有form、form中的控件) WinForm下窗体权限设计   一、   描述 管理员通过控制窗体中的某个...
  • best_caohit
  • best_caohit
  • 2012年08月14日 00:24
  • 2291
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何遍历一个窗体中的某一种控件 c#实现
举报原因:
原因补充:

(最多只允许输入30个字)