Метод Control.ControlCollection.Remove сделает свое дело. Запустите это на контейнере вашего пользовательского элемента управления.
Например, если тип вашего пользовательского элемента управления равен YourUserControlType
, а контейнер, из которого вы хотите удалить все экземпляры вашего пользовательского элемента управления, это Panel с именем panel1
, этот код должен работать:
var controlList = new List<YourUserControlType>(panel1.Controls.OfType<YourUserControlType>());
controlList.ForEach(c => {
panel1.Controls.Remove(c);
});
РЕДАКТИРОВАТЬ: для .NET 2.0 +
List<YourUserControlType> controlList = new List<YourUserControlType>();
for (int i = 0; i < panel1.Controls.Count; i++) {
YourUserControlType uc = panel1.Controls[i] as YourUserControlType;
if (uc != null) {
controlList.Add(uc);
}
}
foreach (YourUserControlType uc in controlList) {
panel1.Controls.Remove(uc);
}
Обратите внимание, что в обеих версиях мы избегаем удаления элементов управления из коллекции элементов управления, поскольку выполняем итерацию по этой коллекции. Если вы не будете осторожны, удаление элементов из коллекции во время итерации может вызвать проблемы.