我有一个带有选项卡控件的应用程序和每个选项卡中的几个文本框,当用户这样说时,我希望清除窗口中的每个文本框(称为MainWindow)。我使用了here描述的方法,但它似乎只适用于选项卡中的文本框,它是焦点。
答案 0 :(得分:4)
试试这个:
void ClearTextBoxes(DependencyObject obj)
{
TextBox tb = obj as TextBox;
if (tb != null)
tb.Text = "";
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj as DependencyObject); i++)
ClearTextBoxes(VisualTreeHelper.GetChild(obj, i));
}
private void Button_Click(object sender, RoutedEventArgs e)
{
ClearTextBoxes(this);
}
答案 1 :(得分:1)
尝试使用VisualTreeHelper.GetChildren
LogicalTreeHelper.GetChildren
的来电
LogicalTreeHelper获取实际的可视化树。通常这不仅仅是逻辑树,但在这种情况下,由于其他选项卡不可见 - 这些选项卡中的可视子树不会被创建。 LogicalTree应该仍然在那里,所以这应该工作。