示例#1
0
        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();
        }
示例#2
0
        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);
        }