C# WPF-清除tabcontrol中不工作的所有文本框

C# WPF-清除tabcontrol中不工作的所有文本框,c#,wpf,textbox,wpf-controls,C#,Wpf,Textbox,Wpf Controls,我有一个带有选项卡控件的应用程序,每个选项卡中有几个文本框,当用户这样说时,我希望窗口(称为MainWindow)中的每个文本框都被清除。我使用了所描述的方法,但它似乎只适用于选项卡中处于焦点的文本框。尝试将对VisualTreeHelper.GetChildren的调用替换为LogicalTreeHelper.GetChildren LogicalTreeHelper获取实际的可视树。通常这比逻辑树要复杂得多,但在这种情况下,由于其他选项卡不可见,因此不会创建这些选项卡中的可视子树。 但是,L

我有一个带有选项卡控件的应用程序,每个选项卡中有几个文本框,当用户这样说时,我希望窗口(称为MainWindow)中的每个文本框都被清除。我使用了所描述的方法,但它似乎只适用于选项卡中处于焦点的文本框。

尝试将对
VisualTreeHelper.GetChildren
的调用替换为
LogicalTreeHelper.GetChildren

LogicalTreeHelper获取实际的可视树。通常这比逻辑树要复杂得多,但在这种情况下,由于其他选项卡不可见,因此不会创建这些选项卡中的可视子树。
但是,LogicalTree应该仍然在那里,因此应该可以工作。

尝试将对
VisualTreeHelper.GetChildren
的调用替换为
LogicalTreeHelper.GetChildren

LogicalTreeHelper获取实际的可视树。通常这比逻辑树要复杂得多,但在这种情况下,由于其他选项卡不可见,因此不会创建这些选项卡中的可视子树。 但是,LogicalTree应该仍然在那里,因此应该可以工作。

尝试以下方法:

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);
}
void ClearTextBox(DependencyObject对象对象)
{
TextBox tb=obj作为TextBox;
如果(tb!=null)
tb.Text=“”;
for(int i=0;i
试试这个:

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);
}
void ClearTextBox(DependencyObject对象对象)
{
TextBox tb=obj作为TextBox;
如果(tb!=null)
tb.Text=“”;
for(int i=0;i
请检查我的解决方案是否适用于您。请检查我的解决方案是否适用于您。这似乎对我当前的方法没有什么不同的影响。当我清除文本框时,只有焦点选项卡中包含的文本框被清除。我刚刚创建了一个数组,其中每个选项卡都在其中。我在你的函数中循环了它们,它成功了。谢谢。它似乎对我当前的方法没有什么不同的影响。当我清除文本框时,只有焦点选项卡中包含的文本框被清除。我刚刚创建了一个数组,其中每个选项卡都处于焦点。我在你的函数中循环了它们,它成功了。谢谢