0

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)
4

0 に答える 0