Form1 には、いくつかの長方形を作成するボタンと、同じ Form1 にそれらの長方形を削除する別のボタンがあります (これは以下のコードで機能します)。
canvas.Parent = Nothing
Form1には、いくつかの値、チェックボックス、テキストボックスを含む新しいForm2を開く別のボタンがあります
この Form2 にはチェックボックスがあり、一度 OK をチェックすると、「FORM1」にさらにいくつかの長方形が作成されます
値と四角形をリセットするには、Form2 にチェックボックス/ボタンが必要です。したがって、基本的にこのチェックボックスをオンにすると、このフォームを介して作成された長方形のみが削除され、Form1 の背景にあるすべての長方形は削除されません。
元。Form1 には既に 5 つの四角形があり、Form2 を開いていくつかの値を入力すると、さらに 2 つの四角形が作成されたので、Form1 には 7 つの四角形があります。四角形のサイズや向きが気に入らないので、Form2 で 1 つのボックスをチェックすると、最後の 2 つの四角形が削除されたため、最終的に Form1 に 5 つの四角形が残っているとします。私が十分に明確であることを願っています!
多くのオプションを試しましたが、どれも機能していません (例: 「ブロック」という名前の RectangleShape または単に RectangleRhape を削除したい
Block.Dispose()
Block.Invalidate()
Form1.Controls.Find("Block", True)
Block.Dispose()
DirectCast(Controls(dummy), RectangleShape).Dispose()
次に、「Shapecontainer1」に問題があり、宣言されていないというエラーが発生している以下のコードを見つけました。Form2で宣言するにはどうすればよいですか? クラスを作る?別のクラスを作成したら、その中で「形状」を定義する方法は?
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)