日期:2014-05-18  浏览次数:21013 次

winform如何遍历所有的第三方控件
如果控件是.net自带的控件,这个遍历好做,通过Control的Controls属性就行

但第三方控件不一定继承Control,上面的方法就行不通

看了一些设计器的代码,对于子控件属性的识别也只是写死“Controls”这个属性名称

只能来这里看看各位有什么办法!!谢谢

------解决方案--------------------

比如你自定义控件叫AA
C# code

foreach(AA aa in panel.Controls)
{}
//或者
foreach(Control aa in Panel.Controls)
{
   if(aa is AA && ((AA)aa).Name == "aa")
   {}
}

------解决方案--------------------
探讨
引用:
比如你自定义控件叫AA

C# code

foreach(AA aa in panel.Controls)
{}
//或者
foreach(Control aa in Panel.Controls)
{
if(aa is AA && ((AA)aa).Name == "aa")
{}
}

……

------解决方案--------------------
不继承自 Control 的控件还真没见过.

------解决方案--------------------
探讨

引用:
比如你自定义控件叫AA

C# code

foreach(AA aa in panel.Controls)
{}
//或者
foreach(Control aa in Panel.Controls)
{
if(aa is AA && ((AA)aa).Name == "aa")
{}
}

都说了,第三方控件不一定继承Control

------解决方案--------------------
还是需要预先了解其类型,

比如 类库的 TabControl 若要遍历, 可以使用 TabPages 属性, Controls 属性

.net 2.0 的 toolstrip 系列, 由于可以寄宿控件, 子集合也有非继承自 Control 的.

------解决方案--------------------
探讨

还是需要预先了解其类型,

比如 类库的 TabControl 若要遍历, 可以使用 TabPages 属性, Controls 属性

.net 2.0 的 toolstrip 系列, 由于可以寄宿控件, 子集合也有非继承自 Control 的.

------解决方案--------------------
探讨
如果控件是.net自带的控件,这个遍历好做,通过Control的Controls属性就行

但第三方控件不一定继承Control,上面的方法就行不通

看了一些设计器的代码,对于子控件属性的识别也只是写死“Controls”这个属性名称

只能来这里看看各位有什么办法!!谢谢

------解决方案--------------------

引用:
比如你自定义控件叫AA

C# code

foreach(AA aa in panel.Controls)
{}
//或者
foreach(www.cctv40.comControl aa in Panel.Controls)
{
if(aa is AA && ((AA)aa).Name == "aa")
{}
}

……