有没有办法枚举 .NET 表单对象上的所有组件并在 c# 中更改其某些属性?基本形式的方法应该能够枚举所有组件,包括那些以派生形式添加的组件。
与 Delphi 一样,.NET 中的 C# 可以在一个表单中列出所有可视控件。
Delphi: Self.Controls[i];
//其中 i = 0 到 ControlCount-1
C#:foreach(Control c in Controls) {}
在这两种语言/技术中,这可以在基本表单方法中使用,以列出甚至添加到派生表单上的所有控件。
到目前为止一切都很好,但这与非可视组件的工作方式不同。
在 Delphi 中,可以通过以下方式列出所有非可视组件:
Self.Components[i];
//其中 i = 0 到 ComponentCount-1。请注意,该列表还包括以派生形式添加的所有组件。
它在 c# 中不能以类似的方式工作。您可以使用表单的components
容器来获取有关某些组件的一些信息 - 只有那些使用System.ComponentModel.Container
. 它没有列出所有组件。例如,DevArt 的 MySQL 组件不是使用 的创建的,ComponentsModel.Container
不能枚举。
此外,在任何情况下,添加到派生表单的那些组件不能在基础对象中枚举,即使它们是使用ComponentModel.Container创建的,因为ComponentModel.Container实例对于每个表单对象都是本地的。