Exemple #1
0
        void updateShipListView(IEnumerable <MemberData.Ship.Info> ships)
        {
            lvShipList.BeginUpdate();

            //現在登録されてるリスト内容をハッシュへ
            Dictionary <int, ShipListViewItem> updateMap = new Dictionary <int, ShipListViewItem>();

            foreach (ShipListViewItem it in lvShipList.Items)
            {
                updateMap[it.Info.ShipId] = it;
            }

            //表を更新/追加する
            foreach (MemberData.Ship.Info it in ships)
            {
                if (updateMap.ContainsKey(it.ShipId))
                {
                    //既に存在してる艦艇情報の更新をする
                    updateMap[it.ShipId].Update(it);
                    updateMap.Remove(it.ShipId);
                }
                else
                {
                    //なければ新規に追加
                    ShipListViewItem lvit = new ShipListViewItem(it, _ilSlotItem);
                    lvShipList.Items.Add(lvit);
                }
            }

            //消失した艦艇をリストから消す
            foreach (var it in updateMap.Values)
            {
                lvShipList.Items.Remove(it);
            }

            int used = 0, total = lvShipList.Items.Count;

            foreach (ShipListViewItem it in lvShipList.Items)
            {
                if (it.Info.Fleet != null && it.Info.Fleet.Length > 0)
                {
                    used++;
                }
            }

            if (used == total)
            {
                used = -1;
            }

            Text = string.Format("艦娘一覧 艦隊:{0} {1}/{2}", used, total, MaxShip);

            lvShipList.EndUpdate();
        }
Exemple #2
0
        public FormShipList(ImageList ilSlotItem)
        {
            _ilSlotItem = ilSlotItem;
            InitializeComponent();
            lvShipList.DoubleBuffer(true);
            //ウィンドウハンドルを生成しないと、Invokeで死ぬ
            IntPtr dummyHandle = Handle;

            ShipListViewItem.InitializeColumn(lvShipList);

            lvShipList.ListViewItemSorter = Comparer <ShipListViewItem> .Default;
            lvShipList.LoadColumnWithOrder(Properties.Settings.Default.ShipListColumnWidth);

            if (!Properties.Settings.Default.ShipListBounds.IsEmpty)
            {
                Bounds = Properties.Settings.Default.ShipListBounds;
            }

            var sm = new SystemMenu(this);

            sm.InsertMenuItem(1, "ウィンドウ復帰", 6);
        }