我是用c#(WPF)编程的。我有很多 nested controls
. 我想... clear all
的TextBox控件。要通过它们的名称来访问它们非常困难。有什么方法可以访问它们 recursively
并清除它们?
例如这样的一些东西。
public void ClearAll(Control c)
{
if(c is TextBox)
{
((TextBox)c).Clear();
return;
}
foreach(Control child in GetChild(c))
{
ClearAll(child);
}
}
VisualTreeHelper类很方便。你可以像这样使用它。
static public void TraverseVisualTree(Visual myMainWindow)
{
int childrenCount = VisualTreeHelper.GetChildrenCount(myMainWindow);
for (int i = 0; i < childrenCount; i++)
{
var visualChild = (Visual)VisualTreeHelper.GetChild(myMainWindow, i);
if (visualChild is TextBox)
{
TextBox tb = (TextBox)visualChild;
tb.Clear();
}
TraverseVisualTree(visualChild);
}
}