очистка элементов управления Visual Basic Forms

У меня есть поля с изображениями внутри родительской метки, и я хочу удалить их все. Я попробовал MyLbl.controls.clear(), и это ничего не дало, я не получил ошибку, просто ничего не произошло. Я пытался давать им теги и перебирать все элементы управления в форме в поисках тега, но так и не нашел их.

Есть ли способ сделать это?


person Jack    schedule 02.05.2015    source источник


Ответы (1)


WinForms Ярлык элемент управления по умолчанию не позволяет добавлять дочерние элементы управления с помощью конструктора, даже если над меткой появляются графические поля. Если вы явно не указали MyLbl.Controls.Add MyPicture1, поле изображения на самом деле является дочерним элементом вашего Form или какого-либо другого контейнера.

Вы можете проверить это, выбрав Вид > Другие окна > Структура документа в Visual Studio, когда открыт конструктор форм.

Если поле изображения является дочерним элементом формы, вам придется удалить связанные элементы управления из коллекции Controls формы.

Но чтобы упростить это, вы можете просто добавить GroupBox или Panel в свою форму и поместить туда PictureBoxes. Затем вы можете сделать MyGrpBox.Controls.Clear().

person Mike Makarov    schedule 02.05.2015
comment
Я добавил поле изображения в коде во время выполнения: Me.Controls.Add(MyPicture1) MyPicture1.Parent = Mylbl и установил эту позицию относительно родителя метки. Это работает. Я попытался очистить элементы управления с панели, как было предложено, используя MyPanel.controls.clear(), и это тоже ничего не дало. - person Jack; 02.05.2015
comment
Подождите, сначала вы добавляете изображение в элементы управления формы (Me.Controls.Add(MyPicture1)), а затем устанавливаете его родителем метку (MyPicture1.Parent = Mylbl). На этом шаге предыдущий вызов можно просто проигнорировать. Но теперь он в Controls Mylbl. Так что на данный момент Mylbl.Controls.Clear() должно работать. Если вы добавите MyPicture1 к Controls MyPanel, тогда MyPanel.controls.clear() должно работать. - person Mike Makarov; 02.05.2015
comment
да, это моя проблема, это должно работать, но не работает, и я не вижу причин, почему это не должно - person Jack; 02.05.2015
comment
Ладно, что-то не так с отношениями между родителями и детьми. В качестве простого решения проблемы я могу предложить просто позвонить MyPicture1.Dispose() - person Mike Makarov; 02.05.2015
comment
Исправил, только что понял, что звонил Клиру не в том месте. мой плохой, спасибо - person Jack; 02.05.2015