我有一个列表框,其中包含一些项目。这些项目是网格,包含各种文本块,按钮等。
foreach (Grid thisGrid in myListBox.SelectedItems)
{
foreach (TextBlock thisTextblock in thisGrid.Children)
{
//Do Somthing
}
}
然而,这引发了异常,因为除了Textblock之外还有其他项目。我怎么能适应这个?感谢。
答案 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
});