回答編集履歴

2

修正

2019/04/06 05:16

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -34,7 +34,7 @@
34
34
 
35
35
  {
36
36
 
37
- c.Dispose();
37
+ pic1.Controls[i].Dispose();
38
38
 
39
39
  }
40
40
 

1

追記

2019/04/06 05:16

投稿

YAmaGNZ
YAmaGNZ

スコア10258

test CHANGED
@@ -1,4 +1,28 @@
1
1
  多分、foreachのループ内でControlsの中身が変化することが原因と思われます。
2
+
3
+
4
+
5
+ pic1.Controls[0] = ShapeContainer1
6
+
7
+ pic1.Controls[1] = ShapeContainer2
8
+
9
+ pic1.Controls[2] = ShapeContainer3
10
+
11
+
12
+
13
+ とあった時に
14
+
15
+ foreachの最初でpic1.Controls[0]が取得され、ShapeContainer1が消されます。
16
+
17
+ この時
18
+
19
+ pic1.Controls[0] = ShapeContainer2
20
+
21
+ pic1.Controls[1] = ShapeContainer3
22
+
23
+ とControlsが変化するのですが、次のループでpic1.Controls[1]が取得されShapeContainer3が消されることになります。
24
+
25
+
2
26
 
3
27
  ```C#
4
28
 
@@ -6,7 +30,7 @@
6
30
 
7
31
  {
8
32
 
9
- if (pic1.Controls(i).GetType().Name == "ShapeContainer")
33
+ if (pic1.Controls[i].GetType().Name == "ShapeContainer")
10
34
 
11
35
  {
12
36