C# 如何访问行和列中的元素
我想访问包含列和行的网格中的所有元素 我对找到的方法进行了编辑,但它总是返回nullC# 如何访问行和列中的元素,c#,windows-phone-7,grid,rows,elements,C#,Windows Phone 7,Grid,Rows,Elements,我想访问包含列和行的网格中的所有元素 我对找到的方法进行了编辑,但它总是返回null private static FrameworkElement GetChildren(Grid grid, int row, int column) { FrameworkElement fr = null; foreach (FrameworkElement child in grid.Children) {
private static FrameworkElement GetChildren(Grid grid, int row, int column)
{
FrameworkElement fr = null;
foreach (FrameworkElement child in grid.Children)
{
if ((Grid.GetRow(child) == row) && (Grid.GetColumn(child) == column))
{
fr = child;
}
else
{
fr = null;
}
}
return fr;
} //getchildren
您的方法是正确的,但您的算法是错误的 假设网格包含两个元素。第一个是你正在寻找的
foreach
枚举所有控件,并返回第一个控件。它是正确的行和列,因此您可以将其分配给fr
将继续并返回第二个。它不是正确的行/列,因此您将null
分配给fr
foreach
循环已完成元素枚举,并返回fr
,该值为空break
指令退出循环:
FrameworkElement fr = null;
foreach (FrameworkElement child in grid.Children)
{
if ((Grid.GetRow(child) == row) && (Grid.GetColumn(child) == column))
{
fr = child;
break;
}
}
return fr;
或者,您可以使用Linq缩短代码:
return grid.Children
.OfType<FrameworkElement>()
.FirstOrDefault(child => Grid.GetRow(child) == row && Grid.GetColumn(child) == column);
返回grid.Children
第()类
.FirstOrDefault(child=>Grid.GetRow(child)=行和Grid.GetColumn(child)=列);