/// <summary> /// 比較する。 /// </summary> /// <param name="item1">アイテム1.</param> /// <param name="item2">アイテム2.</param> /// <returns>item1<item2:-1、item1==item2:0、item1>item2:1。</returns> public override int Compare(ListViewItemEx item1, ListViewItemEx item2) { int cmp; bool ascending = this.Order == SortOrder.Ascending; FileListViewItem flvi1 = item1 as FileListViewItem; FileListViewItem flvi2 = item2 as FileListViewItem; if (flvi1 == null || flvi1.Cols == null || flvi2 == null || flvi2.Cols == null) { // どちらかのアイテムが FileListViewItem では内場合は FileListViewItem以外<FileListViewItem になるようにする if (flvi1 == null && flvi2 == null) { return(0); } else if (flvi1 == null) { return(ascending ? -1 : 1); } else { return(ascending ? 1 : -1); } } ShellItem shi1 = flvi1.ShellItem; ShellItem shi2 = flvi2.ShellItem; if (shi1.ItemType != shi2.ItemType) { // アイテムの種類が異なる場合は種類に応じて大小判定 int i1 = (int)shi1.ItemType; int i2 = (int)shi2.ItemType; if (i1 == i2) { cmp = 0; } else if (i1 < i2) { cmp = -1; } else { cmp = 1; } return(ascending ? cmp : -cmp); } if (shi1.ItemType == ShellItemType.Drive) { // ドライブ同士を比較する場合はドライブ名で比較 cmp = shi1.Path.CompareTo(shi2.Path); return(ascending ? cmp : -cmp); } return(base.Compare(item1, item2)); }
private void onRemoved(SubsidiaryMarket m, SubsidiaryCompany company) { if (m != market) { return; // ignore } ListViewItemEx item = (ListViewItemEx)companies[company]; companies.Remove(company); list.Items.Remove(item); }
private void onAdded(SubsidiaryMarket m, SubsidiaryCompany company) { if (m != market) { return; // ignore } ListViewItem item = new ListViewItemEx(company); list.Items.Insert(0, item); companies.Add(company, item); }