清除窗口中的所有TextBox

问题描述 投票:1回答:1

我是用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);
    }
}
c# wpf controls wpf-controls
1个回答
2
投票

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);
        }
    }
© www.soinside.com 2019 - 2024. All rights reserved.