2015-02-12 4 views
0

Я пытаюсь удалить кнопки, созданные во время выполнения на вкладке. Я сделал функцию, которая должна пройти через все элементы управления на этой вкладке, но по какой-то причине только половина сделанных кнопок удаляется каждый раз, когда она вызывается. (Есть 8 кнопок на странице, и я хочу, чтобы все удалены)Удаление элементов управления из tabPage

foreach(var ctr in tabControl.SelectedTab.Controls) 
{ 
    if (ctr is Button) 
    { 
     if (ctr is Button) { tabControl.SelectedTab.Controls.Remove((Button)ctr); } 
    } 
} 

Я даже попытался сделать следующее, только встретились с той же проблемой,

for (int i = 0; i < 8; i++) 
    { 
     tabControl.SelectedTab.Controls.Remove(
     ((Button)tabControl.SelectedTab.Controls[i])); 
    } 

Однако, когда я пытаюсь отладки, он распознает только 1-ю, 3-ю, 5-ю и 7-ю кнопки, сделанные на tabPage, и удаляет только их, оставляя 4. Если я попытаюсь сделать это второй раз, опять же, он удалит половину, оставив 2. Я инициализирую каждую кнопку следующим образом ,

for (int i = 0; i < 8; i++) 
    { 
     tempButton[i] = new Button(); 
     tabControl.SelectedTab.Controls.Add(tempButton[i]); 
     tempButton[i].AutoSize = true; 
     tempButton[i].Location = new System.Drawing.Point(
        100 + (150 * (i % 4)), 175 + (175 * (int)(.25 * i))); 
     //tempButton[i].Name = "tempButton" + i.ToString(); 
     tempButton[i].Text = names[i]; 
     tempButton[i].Size = new System.Drawing.Size(35, 13); 
     tempButton[i].TabIndex = i; 
    } 

ответ

0

К тому времени удаления элементов управления [я], в следующий раз, когда элементы управления [I] изменилась, как кнопка второй может быть 1-й после удаления кнопки.

Вы могли бы попытаться получить все кнопки и сохранить его в коллекцию темп, а не непосредственно ссылки на них с SelectedTab.Controls [я]:

var buttons = tabControl.SelectedTab.Controls.OfType<Button>() 
for (int i = 0; i < buttons.Count; i++) { 
    tabControl.SelectedTab.Controls.Remove(buttons[i]); 
} 

BTW: Вы могли бы скрыть эти кнопки, изменяя свойство Visible.

+0

Это похоже на проблему, хотя ваш метод дал мне ту же проблему. Закончилось движение с циклом for, отсчет с конца, и это похоже на шарм. Спасибо за идею! – Damonky

+0

Я проверил код и не могу повторить то, что вы сказали! Вы уверены, что вышеуказанный код не работает? Снимок, пожалуйста! – David

+0

Протестировал мой исходный код или обратный цикл? Кроме того, я новичок в stackoverflow, для чего вам нужен снимок? – Damonky

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

  • Нет связанных вопросов^_^