C#,Foreach项目

时间:2010-11-05 07:55:55

标签: c# .net silverlight

我有一个列表框,其中包含一些项目。这些项目是网格,包含各种文本块,按钮等。

foreach (Grid thisGrid in myListBox.SelectedItems)
                        {
                                foreach (TextBlock thisTextblock in thisGrid.Children)
                                {
                                     //Do Somthing
                                }
                        }

然而,这引发了异常,因为除了Textblock之外还有其他项目。我怎么能适应这个?感谢。

4 个答案:

答案 0 :(得分:13)

在我阅读时,问题出现在内部循环中,Children中的内容不是TextBlock s。

如果LINQ可用:

foreach (TextBlock thisTextblock in thisGrid.Children.OfType<TextBlock>()) {
    // ... do something here
}

否则:

foreach (object child in thisGrid.Children) {
    TextBlock thisTextblock = child as TextBlock;
    if(thisTextblock  == null) continue;
    // ... do something here
}

答案 1 :(得分:3)

你可以尝试

foreach (TextBlock thisTextblock in thisGrid.Children.Where(c => c is TextBlock))
{ /* ... */ }

为你的内循环。

编辑:TIL,这也可以写成:

foreach (TextBlock in thisTextblock in thisGrid.Children.OfType<TextBlock>());

答案 2 :(得分:0)

foreach (var thisTextblock in thisGrid.Children)
                            {
                                 if(thisTextblock is Textblock)
                                     //Do Somthing
                            }

答案 3 :(得分:0)

如果LINQ可用,请尝试:

thisGrid.Children.OfType<TextBlock>().ToList().ForEach(tb =>
{
...your code here
});