清除控件内的文本框

时间:2011-08-08 14:15:59

标签: c# wpf wpf-controls

我有一系列标签,其中包含文本框。某些选项卡还有一个控件,其中包含Scrollview内的文本框。我试图遍历选项卡并清除文本框的内容。

我打算用这个:

foreach(TabItem item in Tabs.Items)
{
    ClearTextBoxes(this);
}

然后我用它来清除文本框:

TextBox tb = obj as TextBox;
if (tb != null)
tb.Text = "";
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
{
    ClearTextBoxes(VisualTreeHelper.GetChild(obj, i));
}

目前只清除第一个标签,其余都没有。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

使用LogicalTreeHelper。只有当前活动选项卡的项目包含在可视化树中,因此可视树帮助程序不是您任务的最佳选择。

迭代选项卡项是IMO没有必要,只有当你有许多其他控件没有驻留在tab-items中,因此想要节省cpu功率。正如Bela R已经提到的,在调用ClearTextBoxes()时出错。

答案 1 :(得分:0)

我认为它应该是ClearTextBoxes(item)而不是ClearTextBoxes(this)

foreach(TabItem item in Tabs.Items)
{
    ClearTextBoxes(item);
}