C# 清除多个文本框中的文本';马上

C# 清除多个文本框中的文本';马上,c#,wpf,C#,Wpf,我有一个WPF应用程序,它有一个网格,其中有多个文本框s。如何使每个TextBox.Text=null点击一个按钮?尝试一下: private void button1_Click(object sender, RoutedEventArgs e) { foreach (UIElement control in myGrid.Children) { if (control.GetType() == typeof(TextBox

我有一个WPF应用程序,它有一个
网格
,其中有多个
文本框
s。如何使每个
TextBox.Text=null点击一个按钮?

尝试一下:

   private void button1_Click(object sender, RoutedEventArgs e)
    {
        foreach (UIElement control in myGrid.Children)
        {
            if (control.GetType() == typeof(TextBox))
            {
                TextBox txtBox = (TextBox)control;
                txtBox.Text = null;
            }
        }
    }

类似这样的方法会奏效:

private void Button_Click(object sender, RoutedEventArgs e) {
    foreach (UIElement element in this.grid.Children) {
        TextBox textBox = element as TextBox;
        if (textBox == null)
            continue;

        textBox.Text = null;
    }
}

Tom和code裸体提供的代码将满足您的要求,但我通常建议您不要使用这种逻辑

网格用于帮助您直观地组织控件,它是一个布局容器。决不能在幕后用它来逻辑地组织控件


不过,正如我所说,这是一个相当普遍的建议。您的程序可能会从其他方法中受益。

有多种方法可以解决此问题

第一种是一种混合方法,通过绑定和单击按钮删除数据,让数据向下流到文本框

首先,您需要确保数据类实现:

公共类Foo:INotifyPropertyChanged
{
私人弦杆;
私有字符串baz;
公共字符串栏
{
获取{返回this.bar;}
设置
{
这个.bar=值;
//这就是绑定的魔力所在
本条关于不动产变更(“酒吧”);
}
}
//其他同学在这里。。。
}
通过绑定在XAML中引用:


最后,使用
DataContext
窗口中的路由事件处理程序将这些绑定连接起来

公共窗口1()
{
this.InitializeComponent();
//设置绑定使用的DataContext
这个.Clear();
}
私有无效清除按钮\u单击(对象发送者,路由目标)
{
这个.Clear();
}
私人空位清除()
{
this.DataContext=new Foo();
}
这种方法将推动您更好地处理更复杂的UI


最后的努力是:

///这是一个错误的选择。
私有无效清除按钮\u单击(对象发送者,路由目标)
{
//假设网格名为MyGrid
foreach(此.MyGrid.Children.OfType()中的var textBox)
{
textBox.Text=null;
}
}

确定类型的奇怪方法。如果我有一个名为
MyNamespace.TextBox
?:-)的类型怎么办好的,最后一条注释是,即使您的代码有点不同,也要遵循。更好的方法是使用
OfType
Linq方法:
foreach(myGrid.Children.OfType()中的文本框tb){}
。或者,使用
as
操作符,而不是直接比较类型,因为它支持继承:
var-controlAsTextBox=control-as-TextBox;如果(controlAsTextBox!=null){}
+1我完全同意你的观点,但仍然想回答这个问题,你也可以使用Linq方法,
of type
forech(grid.Children.OfType()中的文本框tb){}