WPF 清空容器内所有文本框和密码框有两种方式
//此方法只能遍历容器直接一级子项
//grid为Grid容器名
foreach (UIElement element in grid.Children)
{
if (element is TextBox)
{
(element as TextBox).Clear();
}
}
上面方法只能清空容器直接一级子项,再往下就不行了,所以还有另一种使用可视化树
方法:
/// <summary>
/// 枚举可视对象的所有后代。
/// </summary>
/// <param name="myVisual">要枚举的父容器</param>
public static void EnumVisual(Visual myVisual)
{
//遍历可视对象所有子项
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(myVisual); i++)
{
// 检索指定索引值处的子可视值
Visual childVisual = (Visual)VisualTreeHelper.GetChild(myVisual, i);
// 处理子可视对象
//清空文本框
if (childVisual is TextBox)
{
(childVisual as TextBox).Clear();
}
//清空密码框
if (childVisual is PasswordBox)
{
(childVisual as PasswordBox).Clear();
}
// 枚举子可视对象的子对象。
EnumVisual(childVisual);
}
}
使用方法:
//括号内填写要遍历的父容器名
//注意,括号内尽量不要填this,窗口可视化树内容太多,可能影响效率
EnumVisual(grid);