0

나 Form1을 어떤 rectangle을 생성하는 버튼과 같은 Form1에 다른 사각형들을 삭제하는 버튼이있다. (이것은 아래의 코드로 동작한다.)

canvas.Parent = Nothing

이제 Form1에서 다른 값, 체크 박스 및 텍스트 상자를 사용하여 새 Form2를 여는 Button이 생겼습니다.

이 Form2에는 Checkbox가 있습니다. OK를 선택하면 "FORM1"에 몇 개의 직사각형이 생깁니다.

이제는 값과 직사각형을 다시 설정하기 위해 Form2의 Checkbox / Button이 필요합니다. 그래서 기본적으로이 확인란을 선택하면 Form1의 백그라운드에있는 모든 사각형이 아닌이 양식을 통해 만들어진 사각형 만 삭제됩니다.

전의. Form1에 5 개의 사각형이 이미 있고 Form2를 열었을 때 몇 개의 값을 입력하면 2 개의 사각형이 생겼습니다. 이제 Form1에 7 개의 사각형이 생겼습니다. Form2에서 1 상자를 체크하고 마지막 2 개의 사각형을 지워서 결국 Form1에 5 개의 직사각형이 남아 있도록 사각형의 크기 나 방향이 줄어들게합니다. 내가 충분히 명확하다라고하는 희망!

많은 옵션을 시도했지만 아무도 작동하지 않습니다 (예 : "Block"또는 RectangleRhape라는 이름의 RectangleShape를 삭제하려고합니다.

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을 가져 오는 abel이기 때문에 너무 처분 할 수 있어야합니까? 그러나 그 문제를 제기하는 많은 - 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

연결된 질문


최근 질문