gpt4 book ai didi

c# - Control.Controls 属性是否返回递归嵌套的控件?

转载 作者:行者123 更新时间:2023-11-30 16:52:46 25 4
gpt4 key购买 nike

System.Windows.Forms.Control.Controls 属性的 MSDN 文档(例如 here)指出:

Use the Controls property to iterate through all controls of a form, including nested controls.

我不知道“嵌套控件”在这里的正确含义是什么。
为了说明一个问题,我制作了一个表格,包括:

  • 一个按钮
  • 一个列表框
  • 内部有一个按钮的组框。

代码

MessageBox.Show(Controls.Count.ToString());

给出答案 3。根据我对文档的理解,我假设它会提供 4(算上分组框内的按钮)。如果将组框替换为面板,则会观察到相同的行为。

上述关于嵌套控件的短语实际上是什么意思?

最佳答案

Control.Controls 是该控件的直接 子级的集合。因此您的窗体的控件集合将有 3 个控件。并且您的 GroupBox 的控件集合将有 1 个控件(按钮)。

我不太确定文档中的评论是什么意思,除了可能(虽然不是很 Eloquent )暗示您可以递归地使用此属性来获取所有嵌套控件。例如:

static IEnumerable<Control> GetAllDescendantControls(this Control c)
{
return c.Controls.Cast<Control>()
.Concat(c.Controls.SelectMany(x => x.GetAllDescendantControls()));
}

关于c# - Control.Controls 属性是否返回递归嵌套的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32210015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com