首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >清除用户控件中的所有TextBoxes

清除用户控件中的所有TextBoxes
EN

Stack Overflow用户
提问于 2018-07-12 17:07:04
回答 1查看 48关注 0票数 0

所以我有一个有六个文本框和几个按钮的用户控件。其中一个按钮是“清除”的。当我单击btnClear_Click处理程序中的“清除”按钮时,我希望找到我的用户控件中的所有文本框(仅在我的用户控件中)。然后将它们设置为空字符串。就这样。就这样。

事实证明,这是一件难以克服的巨大困难的事情。找到答案就像试图绘制人类基因组图一样。我只想迭代这些控件。没别的了。

我不想听到我想要做的事情的好处。只是怎么做的机械原理。就像这样:

代码语言:javascript
复制
public partial class myUserControl: UserControl
{
    private void btnClear_Click(object sender, RoutedEventArgs e)
    {
        var allMyControls = SomeMiraculousOperationToGetAllControlsThatOnlyExistInMyUserControl();
        foreach (var control in allMyControls)
        {
            if (control is TextBox)
                ((TextBox)control).Text = string.Empty;
        }
    }
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-14 15:56:36

可以使用VisualTreeHelpe(https://msdn.microsoft.com/fr-fr/library/system.windows.media.visualtreehelper(v=vs.110%29.aspx)r )枚举用户控件的子控件。

您可以找到基于这个类这里的扩展方法。

代码语言:javascript
复制
public static T GetChildOfType<T>(this DependencyObject depObj) 
    where T : DependencyObject
{
    if (depObj == null) return null;

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
    {
        var child = VisualTreeHelper.GetChild(depObj, i);

        var result = (child as T) ?? GetChildOfType<T>(child);
        if (result != null) return result;
    }
    return null;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51311105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档