Я не могу удалить текстовое поле, которое создается динамически, используя Combobox selected Item в Grid. если выбранное значение не равно "Другое (описать)", я должен удалить текстовое поле. У меня есть этот код..
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);
}
Назначьте имя для своего TextBox во время создания, вы можете использовать RegisterName
,
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);
И вы можете удалить это, используя FindName
txt = (TextBox)grid_typeFixture.FindName("lbl_DynamicLine" + row);
if (txt != null)
{
UnregisterName(txt.Name);
grid_typeFixture.Children.Remove(txt);
}
Существует риск установки динамических имен в текстовом поле, если он не соответствует правилам помех (например, имя текстового поля не может иметь пробел). Вместо этого вы можете использовать свойство "Тег" в текстовом поле при создании и поиске, когда захотите убери это.