[Gabriel的专栏] 用C#如何遍历一个窗体中的某一种控件
2006-05-18 20:36
405 查看
用C#如何遍历一个窗体中的某一种控件 document.title="用C#如何遍历一个窗体中的某一种控件 - "+document.title
/* 作者:耿奕廷 版权所有,转载时请注明出处及作者 */
假设我要遍历所有的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;
}
}
}
/* 作者:耿奕廷 版权所有,转载时请注明出处及作者 */
假设我要遍历所有的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#实现
- 如何遍历一个窗体中的某一种控件 c#实现
- 用C#如何遍历一个窗体中的某一种控件
- 用C#如何遍历一个窗体中的某一种控件
- 用C#如何遍历一个窗体中的某一种控件
- 用C#如何遍历一个窗体中的某一种控件
- [转载]C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素
- 如何遍历一个窗体上的控件
- C# winform中一个类中如何调用另一个窗体的控件或方法
- 如何遍历一个窗体上的控件
- C# winform中一个类中如何调用另一个窗体的控件或方法
- C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素
- C# 使用Panel控件实现在一个窗体中嵌套另一个窗体
- ASP.NET 如何:通过遍历控件集合定位页上的 Web 窗体控件
- c#中如何跨线程调用windows窗体控件?
- C#里WinForm开发中如何实现控件随窗体大小的改变而自动适应其改变
- c#中如何跨线程调用windows窗体控件?
- c#中如何跨线程调用windows窗体控件?
- (转) c#中如何设计一个窗体关闭,另一个窗体打开?
- C# 如何遍历删除某个控件上的所有子控件