Как избавиться от RectangleShape, созданного на Form1, нажав кнопку на Form2
У меня есть Form1 с кнопкой, которая создает некоторые прямоугольники, и еще одна кнопка на той же Form1, которая удаляет эти прямоугольники (это работает по приведенному ниже коду)
canvas.Parent = Nothing
Теперь в Form1 у меня есть еще одна кнопка, которая открывает новую форму Form2 с некоторым набором значений, флажков и текстовых полей
Эта форма Form2 имеет флажок, который когда-то проверял OK, он создает несколько прямоугольников на "FORM1"
Теперь мне нужен флажок / кнопка на Form2 для сброса значений и прямоугольников. Таким образом, в основном, когда этот флажок установлен, он должен удалять только прямоугольник, который был сделан через эту форму, а не все прямоугольники на заднем плане в Form1.
Ex. У меня уже есть 5 прямоугольников в Form1, и когда я открыл Form2 и ввел несколько значений, он создал еще 2 прямоугольника, так что теперь у меня есть 7 прямоугольников в Form1. Допустим, я нарисовал как размер или ориентацию прямоугольников, поэтому я установил 1 флажок в Form2 и удалил последние 2 прямоугольника, так что в итоге в Form1 осталось 5 прямоугольников. Надеюсь, я достаточно ясно!
Я перепробовал много вариантов, но ни один не работает (например: я хочу удалить RectangleShape с именем "Block" или просто RectangleRhape
Block.Dispose()
Block.Invalidate()
Form1.Controls.Find("Block", True)
Block.Dispose()
DirectCast(Controls(dummy), RectangleShape).Dispose()
Затем я нашел эти коды ниже, которые имеют проблемы с "Shapecontainer1", выдавая ошибку, что он не объявлен, как мне объявить его в Form2? Сделать урок? Как только я создаю отдельный класс, как определить в нем "Shape"?
For Each shp As RectangleShape In ShapeContainer1.Shapes
DirectCast(shp, RectangleShape).Dispose()
Next
или же
For Each shp As Shape In ShapeContainer1.Shapes
If shp Is RectangleShape Then
ShapeContainer1.Shapes.Remove(shp)
End If
Next`
Извините, ребята, я новичок, может быть очень простой ответ, но я не могу найти ни найти ответ
Код из комментария:
Dim shapesList1 As New List(Of PowerPacks.Shape)
For Each shp As PowerPacks.Shape In ShapeContainer1.Shapes
shapesList1.Add(shp)
Next
Dim shapesList2 As New List(Of PowerPacks.Shape)
For index As Integer = 0 To shapesList1.Count - 1
If Not (TypeOf shapesList1.Item(index) Is PowerPacks.OvalShape) Then
shapesList2.Add(shapesList1.Item(index))
End If
Next
ShapeContainer1.Shapes.Clear()
ShapeContainer1.Shapes.AddRange(shapesList2.ToArray)