我有一个 WPF Panel
(例如 Canvas
),我想删除它的 Children
只有当这些 child 的类型为 T
,例如所有 Button
类型。
我该怎么做?我可以使用 LINQ 吗?
最佳答案
您可以使用 LINQ,这是一种方法。
canvas1.Children.OfType<Button>().ToList().ForEach(b => canvas1.Children.Remove(b));
或者您可以遍历所有子元素,如果是按钮,则将它们添加到列表中,最后删除它们。不要删除 foreach 循环内的按钮。
List<Button> toRemove = new List<Button>();
foreach (var o in canvas1.Children)
{
if (o is Button)
toRemove.Add((Button)o);
}
for (int i = 0; i < toRemove.Count; i++)
{
canvas1.Children.Remove(toRemove[i]);
}
LINQ 方式更易读,更简单,代码更少。
关于c# - 仅当类型为 T 时才从 Panel 中删除 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11161195/