回答編集履歴
2
修正
answer
CHANGED
@@ -16,7 +16,7 @@
|
|
16
16
|
{
|
17
17
|
if (pic1.Controls[i].GetType().Name == "ShapeContainer")
|
18
18
|
{
|
19
|
-
|
19
|
+
pic1.Controls[i].Dispose();
|
20
20
|
}
|
21
21
|
}
|
22
22
|
```
|
1
追記
answer
CHANGED
@@ -1,8 +1,20 @@
|
|
1
1
|
多分、foreachのループ内でControlsの中身が変化することが原因と思われます。
|
2
|
+
|
3
|
+
pic1.Controls[0] = ShapeContainer1
|
4
|
+
pic1.Controls[1] = ShapeContainer2
|
5
|
+
pic1.Controls[2] = ShapeContainer3
|
6
|
+
|
7
|
+
とあった時に
|
8
|
+
foreachの最初でpic1.Controls[0]が取得され、ShapeContainer1が消されます。
|
9
|
+
この時
|
10
|
+
pic1.Controls[0] = ShapeContainer2
|
11
|
+
pic1.Controls[1] = ShapeContainer3
|
12
|
+
とControlsが変化するのですが、次のループでpic1.Controls[1]が取得されShapeContainer3が消されることになります。
|
13
|
+
|
2
14
|
```C#
|
3
15
|
for (int i = pic1.Controls.Count - 1 ; i >=0 ; i--)
|
4
16
|
{
|
5
|
-
if (pic1.Controls
|
17
|
+
if (pic1.Controls[i].GetType().Name == "ShapeContainer")
|
6
18
|
{
|
7
19
|
c.Dispose();
|
8
20
|
}
|