2014-02-08 4 views
4

Я хочу создать номер Button s динамически, указав диапазон в TextBox.Как удалить кнопки, созданные динамически

Проблема в том, что когда я вхожу в диапазон, например, (3). Он создает 3 кнопки, но затем, когда я даю диапазон меньше диапазона, указанного до, например, (2). он не показывает мне 2 кнопки, это показывает мне предыдущие 3 кнопки. Мой код работает в диапазоне, превышающем предыдущий диапазон, но он терпит неудачу, когда новый диапазон меньше предыдущего диапазона.

Вот мой код:

private void button2_Click(object sender, EventArgs e) 
{ 
    int number = int.Parse(textBox3.Text); 
    Button[] textBoxes = new Button[number]; 
    int location = 136; 

    for (int i = 0; i < textBoxes.Length; i++) 
    { 
     location += 81; 
     var txt = new Button(); 
     textBoxes[i] = txt; 
     txt.Name = "text" + i.ToString(); 
     txt.Text = "textBox" + i.ToString(); 
     txt.Location = new Point(location, 124); 
     txt.Visible = true; 
     this.Controls.Add(txt); 
    } 
} 
+0

Почему вы даете имя, как 'textBoxes', вашему массиву' Button'? –

+0

Сначала я хотел создать текстовые поля. поэтому я забыл изменить имена. – Loyal

ответ

3

Вы не удаляете предыдущие элементы управления. Вы должны хранить их в массиве затем удалить их перед созданием новых:

class Form1 : Form { 
    private Button[] _textBoxes; 

    private void button2_Click(object sender, EventArgs e) { 
     int number = int.Parse(textBox3.Text); 
     if(_textBoxes != null) { 
      foreach(Button b in _textBoxes) 
       this.Controls.Remove(b); 
     } 

     _textBoxes = new Button[number]; 
     int location = 136; 

     for (int i = 0; i < textBoxes.Length; i++) { 
      location += 81; 
      var txt = new Button(); 
      _textBoxes[i] = txt; 
      txt.Name = "text" + i.ToString(); 
      txt.Text = "textBox" + i.ToString(); 
      txt.Location = new Point(location, 124); 
      txt.Visible = true; 
      this.Controls.Add(txt); 
     } 
    } 
} 

Я не проверял этот код, но я надеюсь, что вы получите эту идею.

+0

спасибо, что это работает !!! – Loyal

+0

@Loyal приветствую :) – BlackBear

2

это не обязательно, что происходит перекрытие предыдущей кнопки вы создали.

+0

да, но как удалить это наложение. – Loyal

0

сначала удалите кнопки уже там. вы можете отслеживать их, сохраняя шаблон в своих именах или имея глобальный список и т. д. или другим способом. когда вы входите в функцию, удалите все присутствующие кнопки и создайте новые.

Смежные вопросы