Как удалить все элементы управления, кроме одного? - PullRequest
0 голосов
/ 31 августа 2018

Если я хочу удалить все элементы управления GroupBox, я могу использовать:

foreach (Control c in this.Controls.OfType<GroupBox>().ToList())
{
    this.Controls.Remove(c);
}

Как я могу получить исключение здесь? Другими словами, я хотел бы удалить все элементы управления GroupBox, кроме случаев, когда имя GroupBox - "Groupbox1".

Ответы [ 2 ]

0 голосов
/ 31 августа 2018

Альтернатива решению Руфуса, если вам известны имена групповых ящиков, из которых вы хотите исключить заранее , вы можете использовать метод Enumerable.Except():

foreach (var grp in Controls.OfType<GroupBox>().
                        Except(new[] { groupBox1, groupBox7 }).ToList())
{
    Controls.Remove(grp);
}

Delete GroupBoxes

0 голосов
/ 31 августа 2018

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

foreach (var groupBoxToDelete in Controls.OfType<GroupBox>().ToList()
    .Where(ctrl => ctrl.Name != "groupBox1"))
{
    Controls.Remove(groupBoxToDelete);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...