WPF 中控件的遍历

本文介绍了在WPF应用程序中如何遍历和删除控件。使用foreach语句进行遍历时,若需要删除控件,则会引发错误。文章推荐使用VisualTreeHelper类中的GetChildrenCount和GetChild方法来安全地遍历并移除控件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遍历WPF中的控件,最简单的方法时foreach,如Grid中有2个Ellipse和若干个Line,我想找到这两个Ellipse,直接使用foreach就可以了

foreach(var v in Grid1.Children)
{
    if(v is Ellipse)
    .......
}

但如果是找到这些控件并将其删除,就不能用foreach语句了

foreach(var v in Grid1.Children)
{
    if(v is Ellipse)
    {
        Grid1.Children.Remove(v);
    }    
}

如果使用上述方法,会出现”因为集合已更改,枚举器无效。”的错误
出现异常

此时可以使用VisualTreeHelper 类中提供的方法
VisualTreeHelper.GetChildrenCount 方法:返回指定可视对象包含的子级个数
VisualTreeHelper.GetChild 方法:返回指定父可视对象中位于指定集合索引位置的子可视对象

for (int i = 0; i < VisualTreeHelper.GetChildrenCount(Grid1); i++)
{
    var child = VisualTreeHelper.GetChild(Grid1, i);
    if (child is Ellipse)
        Grid1.Children.Remove((Ellipse) child);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值