gpt4 book ai didi

c# - 在 C# 中获取 Flowlayoutpanel 的所有 child

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

我有一个 Flowlayoutpanel,其中有未知数量的 child 。我怎样才能找回所有的 child ?到目前为止,我已经尝试过但没有成功:

private LoopReturn(Control control)
{
var c = control;

var list = new List<Control>();

while (c != null)
{
list.Add(c);
c = c.GetNextControl(c, true);
}

foreach (var control1 in list)
Debug.Print(control.Name);
}

但我只得到前两个 child 。有人知道为什么吗?

编辑:

我需要所有 child 的所有 child 的 child 等等。

最佳答案

这个怎么样:

var controls = flowLayoutPanel.Controls.OfType<Control>();

请记住,这是线性的,而不是分层的,就像您当前的算法一样。


要获得所有 child ,无论级别如何,您需要执行以下操作:

private IEnumerable<Control> GetChildren(Control control = null)
{
if (control == null) control = flowLayoutPanel;

var list = control.Controls.OfType<Control>().ToList();

foreach (var child in list)
list.AddRange(GetChildren(child));

return list;
}

然后当您想要整个列表时,只需执行以下操作:

var controls = GetChildren();

关于c# - 在 C# 中获取 Flowlayoutpanel 的所有 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232057/

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