説明だけではうまく伝わらないこともありますので、
コードも載せていただけると助かります。
Dim MyImageList(3) As ImageList
Dim Imagelist1 As New ImageList()
'画像の読み込み
With Imagelist1.Images
.Add(Image.FromFile("test01.jpg"))
.Add(Image.FromFile("test02.jpg"))
.Add(Image.FromFile("test03.jpg"))
'---(略)---
.Add(Image.FromFile("test20.jpg"))
End With
'画像が多い場合は配列に登録
If Imagelist1.Images.Count >= 20 Then
MyImageList(0) = Imagelist1
End If
いろいろと手抜きしていますが、こんな感じのコードでしょうか?
.NETのすべての型は「値型」と「参照型」に分けられます。
Imagelist1.Images.Clear()という操作がMyImageList(index)にも影響した(という言い方は正確ではないですが……)のは
ImageListという型が「参照型」だからです。
オブジェクトを思い通りに操作するには、
値型と参照型の違いをよく理解しておく必要があります。
この2つについて説明されているサイトのアドレスを貼っておきますので、
こちらの「変数への代入における値型と参照型の違い」という項目を参考になさってみてください。
http://dobon.net/vb/dotnet/beginner/valuereference.html
お礼
回答ありがとうございます。 なるほどImagelistとは、こういう仕組み?(参照型)だったのですね。これで無関係なMyImageListが消えるのも納得です・・・というか無関係でなかったと・・・ 参照型を理解した(多分)うえで、仕組みを変えてImagelist1は削除して、MyImageList(index)のみにして、画像を入れた後にMyImageList(index).Images.Countが30以上の場合はindexを1プラスして新たにMyImageList(index+1)を作成して次回はそれを使うというやり方にしてプラスされる前のindexの値とカテゴリーを紐付して何とか目的を達成できました。ありがとうございました。