【问题标题】:Clear All TextBoxes Inside User Control清除用户控件内的所有文本框
【发布时间】:2018-12-21 00:10:43
【问题描述】:

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

事实证明,这是一件非常艰巨、难以克服的事情。寻找答案就像试图绘制人类基因组图。我只想通过控件进行迭代。而已。

我不想听到我正在尝试做的事情的优点。只是如何的机制。像这样的:

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;
        }
    }
}

【问题讨论】:

    标签: user-controls wpf-controls


    【解决方案1】:

    您可以使用VisualTreeHelper 来枚举您的用户控件的子控件。

    你可以找到基于这个类的扩展方法here

    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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-30
      • 2011-02-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多