0

私はいくつかの四角形を作成するボタンと同じForm1上の別のボタンをそれらの四角形を削除する(これは下のコードで動作しています)

canvas.Parent = Nothing

今Form1には、新しいForm2をいくつかの値、チェックボックス、テキストボックスで開く別のボタンがあります

このForm2にはチェックボックスがあります。これは一度OKを選択すると、 "FORM1"

今度は、値と長方形をリセットするためにForm2にチェックボックス/ボタンが必要です。 したがって、基本的にこのチェックボックスをオンにすると、Form1のバックグラウンドのすべての矩形ではなく、このフォームから作成された矩形だけが削除されます。

Ex。私はすでにForm1に5つの長方形があり、Form2を開いていくつかの値を入力すると2つの長方形が作成されたので、Form1には7つの矩形があります。私はForm2で1つのボックスをチェックし、最後の2つの長方形を削除したので、Form1に残っている長方形が5つあります。 私は十分に明確であることを願っています!

私は多くのオプションを試しましたが、何も動作していません(例: "Block"という名前の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)


  • コレクションを繰り返し処理している間は、コレクションからアイテムを削除することはできません。そのため、コレクションごとにアイテムを削除することはできません。後ろに行く:For i as Integer = ShapContainer1.Shapes.Count - 1 To 0 Step -1 - LarsTech
  • ありがとう@LarsTech、私はそれを試みたが、 "シェイプはWindowsApplication1.shapecontainer1のメンバーではありません"というエラーを出しています。あなたはshapecontainer1またはshapecontainer1.shapeを定義するのを助けてくれますか? - Mak
  • シェイプはありませんか?私はPowerPackを使用しないので、あなたのコードが私に示すものだけで行くことができます。 - LarsTech
  • 申し訳ありませんが、「シェイプ」とはただシェイプではない。それは私が処分しようとしているPowerpack RectangleShapeです。私はForm2のコントロールからForm1を引き出すことができないので、それを正しく処分できるはずですか?しかし、その問題を引き起こす多くの - Mak
  • これはあなたが前に言ったことと一致するが、同じshapecontainer1エラーと一致するオンラインで見つけたものです。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) - Mak

リンクされた質問


最近の質問