1

ListViewを使用して、画像ファイルのサムネイルを読み込んで表示しています。各ListViewItemに使用している「名前」またはキーは、完全修飾ファイル名です。

同じキーを使用してこれらのファイルのサムネイルをロードするImageListも作成しました。このImageListをListViewの「SmallImageList」プロパティとして割り当てました。

ファイルを追加および削除するときは、ListView.ItemsコレクションとImageList.Imagesコレクションの両方からキーでファイルを追加および削除します。

多くの画像をロードする場合、これはすべて正常に機能します。ただし、特定のキーを削除しようとすると、ListViewコントロールにサムネイルが正しく表示されなくなります。

アイテムを削除する前後:

前 後

デバッグ中にメモリ内の両方のコレクション配列を分析すると、キーが完全に整列します。

使用したコード:

// Add the images from an array of paths
foreach (string xFile in files)
{
    thumbnails_imageList.Images.Add(xFile, images[xFile]);
    files_lst.Items.Add(xFile, Path.GetFileNameWithoutExtension(xFile), xFile);
}

// Delete the selected key(s)
foreach (ListViewItem xItem in files_lst.SelectedItems)
{
    files_lst.Items.Remove(xItem);
    thumbnails_imageList.Images.RemoveByKey(xItem.Name);
}
4

1 に答える 1

1

ListViewItem画像インデックスにバインドされていて、その5位置にある画像を削除すると4、5は4にシフトダウンし、アイテムは参照を保持する5ため、画像は表示されません。

ImageList選択したListViewアイテムを削除するときは、から画像を削除しないでください。

于 2011-10-26T21:26:08.560 に答える