C#winform 写控件的互斥属性时,该如何查找整个运行窗体内所有同类型的控件
抄袭了一个,能实现基本功能,但想进一步完善,改如何改写:首先我对C#的认识只是停留在入门级,所以有些说法请大哥别见怪,大哥你提供的代码应该是遍历fControl里面所有的...
抄袭了一个,能实现
基本功能,但想进一步完善,改如何改写:
首先我对C#的认识只是停留在入门级,所以有些说法请大哥别见怪,大哥你提供的代码应该是遍历fControl里面所有的子控件吧,我的思路是遍历当前控件(蓝色panel里面的其中一个button)BUTTON的父容器Panel1的子控件集,并找出所有同类型BUTTON的控件,并对他们进行实例化,然后在修改他们的属性。问题就出在这里:假设我只是需要遍历当前控件的第一个父容器panel1(蓝色那个),那样子我上面的代码是完全能实现我的“同类型控件互斥“的要求,但是假设如果我想遍历panel(蓝色)的父容器panel(灰色)里面的所有同类型BUTTON
公布答案了:公司大神已经给出解决方法:再添加一个属性值,这个属性值可以获取窗口,然后在用 FieldInfo[] fieldInfo = obj.GetType().GetFields(...);来进行操作。我操,尼玛太神奇了!字符有限,不完全列上去了! 展开
基本功能,但想进一步完善,改如何改写:
首先我对C#的认识只是停留在入门级,所以有些说法请大哥别见怪,大哥你提供的代码应该是遍历fControl里面所有的子控件吧,我的思路是遍历当前控件(蓝色panel里面的其中一个button)BUTTON的父容器Panel1的子控件集,并找出所有同类型BUTTON的控件,并对他们进行实例化,然后在修改他们的属性。问题就出在这里:假设我只是需要遍历当前控件的第一个父容器panel1(蓝色那个),那样子我上面的代码是完全能实现我的“同类型控件互斥“的要求,但是假设如果我想遍历panel(蓝色)的父容器panel(灰色)里面的所有同类型BUTTON
公布答案了:公司大神已经给出解决方法:再添加一个属性值,这个属性值可以获取窗口,然后在用 FieldInfo[] fieldInfo = obj.GetType().GetFields(...);来进行操作。我操,尼玛太神奇了!字符有限,不完全列上去了! 展开
1个回答
展开全部
void FindControl(Control fControl)
{
foreach (Control child in fControl.Controls)
{
if (child.GetType() == typeof(Button))
{//找了button控件,想做什么就写在里面
//MessageBox.Show(child.Name);
//count++;//比如统计Button类型的控件个数
}
if (child.Controls.Count > 0)
{
FindControl(child);
}
}
}
用递归去遍历就可以,上述方法就可以用来找某个控件下面所有的button,包括子控件包含的button。(button这里自己修改期望的控件类型就可以,比如你的oCheckButton)
如果你要统计一个From的把From当做参数传进来,如当前窗体:FindControl (this);
{
foreach (Control child in fControl.Controls)
{
if (child.GetType() == typeof(Button))
{//找了button控件,想做什么就写在里面
//MessageBox.Show(child.Name);
//count++;//比如统计Button类型的控件个数
}
if (child.Controls.Count > 0)
{
FindControl(child);
}
}
}
用递归去遍历就可以,上述方法就可以用来找某个控件下面所有的button,包括子控件包含的button。(button这里自己修改期望的控件类型就可以,比如你的oCheckButton)
如果你要统计一个From的把From当做参数传进来,如当前窗体:FindControl (this);
更多追问追答
追问
我写的是自定义控件的属性
追答
BUTTON只是一个列子,我看你代码里面是自定义控件的class是oCheckButton,那么button的地方你换成oCheckButton就可以用了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询