C# 如何删除WPF网格中动态创建的文本框控件?

C# 如何删除WPF网格中动态创建的文本框控件?,c#,wpf,combobox,C#,Wpf,Combobox,我无法删除使用网格中的Combobox选定项动态创建的文本框。如果所选值不等于“其他(描述)”,我必须删除文本框。我有这个密码 private void btn_addnew_Click(object sender, RoutedEventArgs e) { ComboBox cmb=new ComboBox(); ..... cmb.SelectionChanged+= cmb_SelectionChanged; .....

我无法删除使用网格中的Combobox选定项动态创建的文本框。如果所选值不等于“其他(描述)”,我必须删除文本框。我有这个密码

private void btn_addnew_Click(object sender, RoutedEventArgs e)
    {
       ComboBox cmb=new ComboBox();
        .....
       cmb.SelectionChanged+= cmb_SelectionChanged;
       .....
    }


void cmb_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        var txt = new TextBox();
        if (e.AddedItems[0].ToString() == "Other (describe)")
        {

            var row = (int)((ComboBox)sender).Tag;
            Grid.SetRow(txt, row);
            Grid.SetColumn(txt, 1);
            txt.Margin = new Thickness(10, 10, 0, 0);
            grid_typeFixture.Children.Add(txt);
        }
        else
           grid_typeFixture.Children.Remove(txt);
    }

在创建时为文本框指定名称,您可以使用

你可以这样移除,使用


如果文本框名称不符合命名规则(例如:文本框名称不能有空格),则存在动态设置文本框名称的风险,相反,您可以在创建文本框时使用该文本框的“标记”属性,并在需要删除时对其进行搜索

如果它不创建而直接指向其他部分,该怎么办?如果我在ComboBox中将所选值更改为不等于“其他(描述)”,则不会删除已创建的文本框。。我希望它在运行时创建的文本框名称是什么?我有动态创建Combox和textbox的代码。如果我点击一个按钮,它会一个接一个地创建combobox和textbox。我已经做到了。我正在为选定的组合框值向网格行添加新的文本框。我能够为所选行创建文本框。但是,如果我更改了所选值,则如果选择“其他”(描述),则不会删除您未创建的对应行中的文本框。它直接指向else部分请检查创建部分,您需要注册名称,如果我将ComboItem值更改为,请检查您的邮件=其他(描述),它将删除文本框。但是如果我再次检查value=Other(descripe),它会在注册表名(txt.Name,txt)上显示错误。我无法为该行创建文本框。现在按相反的顺序检查错误@RajDeInno删除时需要调用Unregistername,请检查修改后的代码!如果它有helepd youBuddy,则将其标记为答案;如果我选择了除“other(descripe)”之外的任何其他项目,则其将直接转到else部分并查找未注册的名称。这是第一次检查,我们没有要注销的注册名称@RajDeInno添加一个类似上面的空检查!
        txt = new TextBox();
        txt.Margin = new Thickness(10, 10, 0, 0);
        txt.Name = "DynamicLine" + i;
        RegisterName(txt.Name, txt);
        Grid.SetRow(txt, i);
        Grid.SetColumn(txt, 2);
        grid_typeFixture.Children.Add(txt);
     txt = (TextBox)grid_typeFixture.FindName("lbl_DynamicLine" + row);
     if (txt != null)
            {
                UnregisterName(txt.Name); 
                grid_typeFixture.Children.Remove(txt);
            }