C # Не выбрасывает элементы управления, как я сказал

У меня есть панель управления. А внутри панели пользователи могут добавлять списки со списком, ярлыки текстовых полей и т. Д., Перетаскивать их и прочее, и на моей форме есть кнопка «Удалить», где, если они щелкают по ней, она удаляет все элементы управления на этой панели. НО этот код:

foreach( Control control in panel.Controls )
{
     control.Dispose();
}

... Не работает должным образом. Он не всегда избавляется от ВСЕХ элементов управления внутри панели. Иногда он избавляется от большинства из них, иногда он избавляется только от одного или двух. Иногда все, кроме 1, расположены. WTF?

РЕДАКТИРОВАТЬ:

Вот код, который я использую для добавления элементов управления в Panel:

button1_Click(object sender, EventArgs e)
{
    TextBox tbox = new TextBox();
    tbox.Multiline = true;
    tbox.IsAccessible = true;

    panel.Controls.Add(tbox);
}

Ответы на вопрос(4)

Ваш ответ на вопрос