void updateItemListView(IEnumerable <MemberData.Item.Info> items) { lvItemList.BeginUpdate(); //現在登録されてるリスト内容をハッシュへ Dictionary <int, ItemListViewItem> updateMap = new Dictionary <int, ItemListViewItem>(); foreach (ItemListViewItem it in lvItemList.Items) { updateMap[it.Info.ItemUID] = it; } //表をする foreach (MemberData.Item.Info it in items) { if (updateMap.ContainsKey(it.ItemUID)) { //既に存在してるアイテム情報の更新をする updateMap[it.ItemUID].Update(it); updateMap.Remove(it.ItemUID); } else { //なければ新規に追加 ItemListViewItem lvit = new ItemListViewItem(it); lvItemList.Items.Add(lvit); } } //消失したアイテムをリストから消す foreach (var it in updateMap.Values) { lvItemList.Items.Remove(it); } updateFormTitle(); lvItemList.EndUpdate(); }
public FormItemList(ImageList iconImageList) { InitializeComponent(); //ウィンドウハンドルを生成しないと、Invokeで死ぬ IntPtr dummyHandle = Handle; lvItemList.DoubleBuffer(true); ItemListViewItem.InitializeColumn(lvItemList); lvItemList.ListViewItemSorter = Comparer <ItemListViewItem> .Default; lvItemList.LoadColumnWithOrder(Properties.Settings.Default.ItemListColumnWidth); if (!Properties.Settings.Default.ItemListBounds.IsEmpty) { Bounds = Properties.Settings.Default.ItemListBounds; } lvItemList.SmallImageList = iconImageList; var sm = new SystemMenu(this); sm.InsertMenuItem(4, "ウィンドウ復帰", 6); }