Reputation: 2956
I'm programming in c#(WPF). I have a lot of nested controls
. I want to clear all
of my TextBox control which are in my application. It is very hard to access them by their name. Is there any way to access them recursively
and clear them?
for example some thing like this:
public void ClearAll(Control c)
{
if(c is TextBox)
{
((TextBox)c).Clear();
return;
}
foreach(Control child in GetChild(c))
{
ClearAll(child);
}
}
Upvotes: 1
Views: 3832
Reputation: 158
The VisualTreeHelper class comes handy. You can use it like this:
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);
}
}
Upvotes: 2