int IComparer.Compare(object x, object y) { ListViewItem listViewX = (ListViewItem)x; ListViewItem listViewY = (ListViewItem)y; ListItemInfo itemX = (ListItemInfo)listViewX.Tag; ListItemInfo itemY = (ListItemInfo)listViewY.Tag; if (itemX.IsDirectory && !itemY.IsDirectory) { return(-1); } if (!itemX.IsDirectory && itemY.IsDirectory) { return(1); } if (itemX.IsUpper && !itemY.IsUpper) { return(-1); } if (!itemX.IsUpper && itemY.IsUpper) { return(1); } switch (_comparisonMethod) { case ComparisonMethod.Name: string xname = Path.GetFileName(itemX.FullPath); string yname = Path.GetFileName(itemY.FullPath); return(_ascending ? string.CompareOrdinal(xname, yname) : string.CompareOrdinal(yname, xname)); case ComparisonMethod.Ext: string xext = Path.GetExtension(itemX.FullPath); string yext = Path.GetExtension(itemY.FullPath); return(_ascending ? string.CompareOrdinal(xext, yext) : string.CompareOrdinal(yext, xext)); case ComparisonMethod.Size: return(_ascending ? (int)(itemX.Size - itemY.Size) : (int)(itemY.Size - itemX.Size)); case ComparisonMethod.Date: return(_ascending ? CompareTime(itemX.Time, itemY.Time) : CompareTime(itemY.Time, itemX.Time)); } return(0); }
void ListViewSelectIndexChanged(ListView lv) { List <ListItemInfo> selectedItems = GetSelectedItems(lv); btNewFolder.Enabled = miCreateFolder.Enabled = true; miCopy.Enabled = miDelete.Enabled = miMove.Enabled = btDelete.Enabled = selectedItems.Count > 0; btCopy.Enabled = btMove.Enabled = selectedItems.Count > 0 && _ftp != null; if (selectedItems.Count == 1) { ListItemInfo info = selectedItems[0]; miView.Enabled = miEdit.Enabled = btView.Enabled = btEdit.Enabled = info.IsFile; } else // No files or directories selected or more than one item selected { miView.Enabled = miEdit.Enabled = btView.Enabled = btEdit.Enabled = false; } }