【发布时间】:2016-07-11 14:56:54
【问题描述】:
在 Delphi 中,您可以像这样遍历表单组件(不是控件):
for i := 0 to Form1.ComponentCount - 1 do begin
但是在 c# Winforms 中我尝试了以下方法:
foreach (var component in this.components.Components)
{
MessageBox.Show(component.ToString());
}
我在 google 上找不到任何关于如何迭代组件的示例。我发现的只是如何遍历控件。
我想列出表单上的所有控件和组件。 例如,如果有 2 个按钮和 2 个图像列表,我想列出所有 4 个项目。
【问题讨论】:
-
Delphi 中的组件是什么?它与 Control 有何不同?
-
delphi 中的组件可以是任何东西,例如编辑框和图像列表。它们都保存在同一个集合中。组件列表包含给定组件拥有的所有组件,控件列表包含由给定组件作为父级的所有组件,这是唯一的区别
-
@GuidoG 不是这样。 Delphi 中的控制是指任何来自
TControl的东西。这些是视觉的,它们的识别特征是它们有一个Parent。 -
当我说它们是分开的时,我并不是说在以后的 Delphi 版本中,我是指在 Delphi 的对象层次结构中。我所说的这里有一个误解。如果我没记错的话,有些组件是 TWinControls 的后代,其他的则是 TGraphicControl 的后代?但是所有都是作为 TObject 出生的,还是我真的忘记了 Delphi 的一切?
-
TControl 从哪里继承? TPersistent 继承自 TObject ?如果我没记错的话。在 Borland 课程中,他们从未调用过控件(我将它们交给了 delphi 5)。我第一次了解控件这个术语是在 Visual Studio 中。无论如何,我想解释的是,与 Visual Studio 不同的是,Visual Studio 有 2 个集合,一个用于控件,一个用于组件,它在 Delphi 中只有一个。