none
Удаление динамически созданных controls. RRS feed

  • Вопрос

  • Доброго времени суток. Недавно начал разрабатывать под Windows Phone и в процессе возник вот такое вопрос. Есть динамически созданные контролы, с ними все хорошо, появляются где надо и когда надо. А вопрос в том, как удалить динамически созданной кнопкой динамически созданный текстбокс? Прочитал много интернета, но нашел только старые статьи, которые не помогли. 

    Заранее спасибо.

    Button _button = new Button();
    _button.Content = "X";
    _button.Name = "W";
    _button.Click += _button_Click; 

    TextBox _textbox = new TextBox();
    _textbox.Name = "A";

    _ContentPanel.Children.Add(_button);
    _ContentPanel.Children.Add(_textbox);

     void _button_Click(object sender, RoutedEventArgs e)
                {
                    ????   
                }



    27 декабря 2012 г. 8:24

Ответы

  • 2Alan Linvile

    Можно найти элемент по имени ("textBoxName" - имя удаляемого поля):

    var _textbox = ((FrameworkElement)Application.Current.RootVisual).FindName("textboxName") as UIElement;
    _ContentPanel.Children.Remove(_textbox);

    Или можно предварительно сохранять ссылку на каждый элемент, что вы создаете:

    var textboxes = new Dictionary<string, TextBox>();
    textboxes.Add("textboxName", _textbox);

    И перед удалением получить элемент из словаря:

    textboxes["textboxName"]

    • Помечено в качестве ответа Abolmasov Dmitry 9 января 2013 г. 7:01
    29 декабря 2012 г. 8:04

Все ответы

  • Привет.

    Должно быть наподобии того, как происходит добавление, т.е:

    _ContentPanel.Children.Remove(_textbox);


    Для связи [mail]

    28 декабря 2012 г. 7:33
  • это конечно же понятно, а вот как получить сам _textbox что бы его потом удалить?
    29 декабря 2012 г. 1:35
  • Сохранить ссылку на него, т.е. вынести объявление TextBox _textbox из функции создания контролов. Либо, если в _ContentPanel всего один TextBox, то его можно найти перебрав все элементы массива Children и проверяя тип элемента.


    Для связи [mail]

    29 декабря 2012 г. 7:47
  • 2Alan Linvile

    Можно найти элемент по имени ("textBoxName" - имя удаляемого поля):

    var _textbox = ((FrameworkElement)Application.Current.RootVisual).FindName("textboxName") as UIElement;
    _ContentPanel.Children.Remove(_textbox);

    Или можно предварительно сохранять ссылку на каждый элемент, что вы создаете:

    var textboxes = new Dictionary<string, TextBox>();
    textboxes.Add("textboxName", _textbox);

    И перед удалением получить элемент из словаря:

    textboxes["textboxName"]

    • Помечено в качестве ответа Abolmasov Dmitry 9 января 2013 г. 7:01
    29 декабря 2012 г. 8:04