如何通过在Form2上单击按钮来处置在Form1上创建的RectangleShape

时间:2015-08-26 23:12:11

标签: vb.net winforms powerpack

我有Form1的按钮,它会在同一个Form1上创建一些矩形和另一个按钮来删除那些矩形(这可以通过下面的代码工作)

canvas.Parent = Nothing

现在在Form1中我有另一个Button,它打开New Form2,带有一些值,复选框和文本框

这个Form2有一个复选框,一旦检查确定它在“FORM1”

上做了更多的矩形

现在我需要Form2上的复选框/按钮来重置值和矩形。 因此,基本上选中此复选框时,它应该只删除通过此表单制作的矩形,而不是删除Form1中背景中的所有矩形。

实施例。我已经在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)

0 个答案:

没有答案