gpt4 book ai didi

c# - Foreach 所有表单上的每个控件

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:03 24 4
gpt4 key购买 nike

我想使用 foreach 循环 操作我的表单中的所有控件,我目前正在使用以下方法:

 foreach (Control c in this.Controls)
{
ComponentResourceManager resourceManager = new ComponentResourceManager(typeof(Main));
resourceManager.ApplyResources(c, c.Name, new CultureInfo(lang));
}

foreach 的问题在于 Containers 中的控件未包含在内。

如何将所有Controls 也包含在Containers 中?

我想在 1 个或 2 个 foreach 循环中执行此操作。

最佳答案

控制

将以下类添加到您的项目中:

public static class ControlExtensionMethods
{
public static IEnumerable<Control> GetOffsprings(this Control @this)
{
foreach (Control child in @this.Controls)
{
yield return child;
foreach (var offspring in GetOffsprings(child))
yield return offspring;
}
}
}

它将返回调用者的所有子控件:

var offsprings = this.GetOffsprings();

你可以在循环中使用它:

foreach (Control c in this.GetOffsprings())
{
// Do action
}

菜单项

将以下类添加到您的项目中:

public static class MenuStripExtensionMethods
{
public static IEnumerable<ToolStripItem> GetSubItems(this ToolStrip @this)
{
foreach (ToolStripItem child in @this.Items)
{
yield return child;
foreach (var offspring in child.GetSubItems())
yield return offspring;
}
}

public static IEnumerable<ToolStripItem> GetSubItems(this ToolStripItem @this)
{
if (!(@this is ToolStripDropDownItem))
yield break;

foreach (ToolStripItem child in ((ToolStripDropDownItem) @this).DropDownItems)
{
yield return child;
foreach (var offspring in child.GetSubItems())
yield return offspring;
}
}
}

它将返回调用者的所有子菜单项:

var allMenuItems = this.menuStrip1.GetSubItems()

关于c# - Foreach 所有表单上的每个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15362497/

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