private void AddThumbnail(ThumbnailListViewItem item) { if (Disposing) { return; } if (this.InvokeRequired) { AddThumbnailDelegate d = new AddThumbnailDelegate(AddThumbnail); this.Invoke(d, new object[] { item }); } else { Image image = GetThumbnail(item.Bitmap); LargeImageList.Images.Add(image); //Images[i].repl int imageIndex = LargeImageList.Images.Count - 1; int itemIndex = 0; // 이 태그에 맞는 아이템을 찾자 for (int i = 0; i < Items.Count; i++) { if (Items[i].Tag == item) { itemIndex = i; } } Items[itemIndex].ImageIndex = imageIndex; //Logger.Log("item {0}, name {1}, image {2}", itemIndex, item.Name, imageIndex); } }
private void AddThumbnail(ThumbnailListViewItem item) { if (Disposing) return; if (this.InvokeRequired) { AddThumbnailDelegate d = new AddThumbnailDelegate(AddThumbnail); this.Invoke(d, new object[] { item }); } else { Image image = GetThumbnail(item.Bitmap); LargeImageList.Images.Add(image); //Images[i].repl int imageIndex = LargeImageList.Images.Count - 1; int itemIndex = 0; // 이 태그에 맞는 아이템을 찾자 for (int i = 0; i < Items.Count; i++ ) { if (Items[i].Tag == item) { itemIndex = i; } } Items[itemIndex].ImageIndex = imageIndex; //Logger.Log("item {0}, name {1}, image {2}", itemIndex, item.Name, imageIndex); } }
public void LoadItems(ThumbnailListViewItem[] items) { if ((thumbnailLoadWorker != null) && (thumbnailLoadWorker.IsBusy)) thumbnailLoadWorker.CancelAsync(); ImageList il = new ImageList(); il.ImageSize = new Size(thumbnailSize, thumbnailSize); il.ColorDepth = ColorDepth.Depth32Bit; il.TransparentColor = Color.White; LargeImageList = il; BeginUpdate(); Items.Clear(); LargeImageList.Images.Clear(); AddDefaultThumbnail(); foreach (ThumbnailListViewItem item in items) { ListViewItem lvItem = new ListViewItem(item.Name); lvItem.ImageIndex = 0; lvItem.Tag = item; Items.Add(lvItem); } EndUpdate(); if (thumbnailLoadWorker != null) { // 참고: // backgroundworker가 cancel되도록 되어있지만 실질적으로 runworkercompleted가 호출되기 전까지는 // 아무것도 할 수 없는 상태(pending)이다. CancellationPending된 상태라서 이 상태에서는 // backgroundworker는 동작하지 않는다. (completed가 호출되기 전 까지) if (!thumbnailLoadWorker.CancellationPending) thumbnailLoadWorker.RunWorkerAsync(items); } }