文件属性获取及控件ListView使用常用方法
来源:互联网 发布:淘宝店铺小号 编辑:程序博客网 时间:2024/06/15 16:34
使用控件ListView显示某个目录下所有文件的一些属性,点击控件头可实现排序
获取目录信息使用类DirectoryInfo,获取文件信息使用类FileInfo
添加表头的代码如下所示:
private void Form1_Load(object sender, EventArgs e) { listView1.Columns.Add("File Name", 60, HorizontalAlignment.Left); //一步添加 listView1.Columns.Add("创建日期", 120, HorizontalAlignment.Left); listView1.Columns.Add("修改日期", 120, HorizontalAlignment.Left); listView1.Columns.Add("大小", 120, HorizontalAlignment.Left); ListViewShow(); }
读取文件信息以及写入ListView控件的方法,注意里面涉及到时间转自定义格式字符创的方法
private void ListViewShow() { //string[] fileNames = GetFileNames(@"C:\Users\chen.liu\Desktop\文件\demo"); DirectoryInfo dir = new DirectoryInfo(@"C:\Users\chen.liu\Desktop\文件\demo"); FileInfo[] files = dir.GetFiles(); // 获取所有文件信息。。 listView1.FullRowSelect = true;//点击某一行时整行选中 this.listView1.BeginUpdate(); //数据更新,UI暂时挂起,直到EndUpdate绘制控件,可以有效避免闪烁并大大提高加载速度 foreach (FileInfo file in files) { ListViewItem lvi = new ListViewItem(); lvi.Text = file.Name; lvi.SubItems.Add(file.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"));//获取创建日期 lvi.SubItems.Add(file.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"));//获取最近一次修改日期 lvi.SubItems.Add((file.Length/1024).ToString() + "KB");//获取文件大小 this.listView1.Items.Add(lvi); } this.listView1.EndUpdate(); //结束数据处理,UI界面一次性绘制。 }
然后实现点击列表头即排序的实现方法
首先自定义一个接口类,注意里面Compare方法的实现,使用catch实现对多种不同数据类型的排序
/// <summary> /// This class is an implementation of the 'IComparer' interface. /// </summary> public class ListViewColumnSorter : IComparer { /// <summary> /// Specifies the column to be sorted /// </summary> private int ColumnToSort; /// <summary> /// Specifies the order in which to sort (i.e. 'Ascending'). /// </summary> private SortOrder OrderOfSort; /// <summary> /// Case insensitive comparer object /// </summary> private CaseInsensitiveComparer ObjectCompare; /// <summary> /// Class constructor. Initializes various elements /// </summary> public ListViewColumnSorter() { // Initialize the column to '0' ColumnToSort = 0; // Initialize the sort order to 'none' OrderOfSort = SortOrder.None; // Initialize the CaseInsensitiveComparer object ObjectCompare = new CaseInsensitiveComparer(); } /// <summary> /// This method is inherited from the IComparer interface. It compares the two objects passed using a case insensitive comparison. /// </summary> /// <param name="x">First object to be compared</param> /// <param name="y">Second object to be compared</param> /// <returns>The result of the comparison. "0" if equal, negative if 'x' is less than 'y' and positive if 'x' is greater than 'y'</returns> public int Compare(object x, object y) { int compareResult; ListViewItem listviewX, listviewY; // Cast the objects to be compared to ListViewItem objects listviewX = (ListViewItem)x; listviewY = (ListViewItem)y; // Compare the two items // compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text); try { compareResult = ObjectCompare.Compare(DateTime.ParseExact(listviewX.SubItems[ColumnToSort].Text, "yyyy-MM-dd HH:mm:ss", null), DateTime.ParseExact((listviewY.SubItems[ColumnToSort].Text), "yyyy-MM-dd HH:mm:ss", null));//时间比较 } catch { try { compareResult = ObjectCompare.Compare(int.Parse((listviewX.SubItems[ColumnToSort].Text).TrimEnd('K', 'B')), int.Parse((listviewY.SubItems[ColumnToSort].Text).TrimEnd('K', 'B'))); }//整形比较,去掉尾部的"KB" catch { compareResult = ObjectCompare.Compare(listviewX.SubItems[ColumnToSort].Text, listviewY.SubItems[ColumnToSort].Text);} } // Calculate correct return value based on object comparison if (OrderOfSort == SortOrder.Ascending) { // Ascending sort is selected, return normal result of compare operation return compareResult; } else if (OrderOfSort == SortOrder.Descending) { // Descending sort is selected, return negative result of compare operation return (-compareResult); } else { // Return '0' to indicate they are equal return 0; } } /// <summary> /// Gets or sets the number of the column to which to apply the sorting operation (Defaults to '0'). /// </summary> public int SortColumn { set { ColumnToSort = value; } get { return ColumnToSort; } } /// <summary> /// Gets or sets the order of sorting to apply (for example, 'Ascending' or 'Descending'). /// </summary> public SortOrder Order { set { OrderOfSort = value; } get { return OrderOfSort; } } }
声明该接口
private ListViewColumnSorter lvwColumnSorter;//声明一个比较器接口与ListView控件的排序接口做绑定
// Create an instance of a ListView column sorter and assign it // to the ListView control. lvwColumnSorter = new ListViewColumnSorter(); this.listView1.ListViewItemSorter = lvwColumnSorter;//设置比较器的接口
点击列表头触发排序操作
private void listView1_ColumnClick(object sender, ColumnClickEventArgs e) { // Determine if clicked column is already the column that is being sorted. if (e.Column == lvwColumnSorter.SortColumn)//切换排序方式,递增or递减 { // Reverse the current sort direction for this column. if (lvwColumnSorter.Order == SortOrder.Ascending) { lvwColumnSorter.Order = SortOrder.Descending; } else { lvwColumnSorter.Order = SortOrder.Ascending; } } else { // Set the column number that is to be sorted; default to ascending. lvwColumnSorter.SortColumn = e.Column; lvwColumnSorter.Order = SortOrder.Ascending; } // Perform the sort with these new sort options. this.listView1.Sort(); } }需要注意接口的使用方法,该接口可与排序方法直接做绑定,然后在后面的使用中直接使用这个接口的声明即可
0 0
- 文件属性获取及控件ListView使用常用方法
- 常用文件属性获取
- java获取文件属性的方法
- 使用getdetailsof 接口获取文件属性
- 使用ShellClass获取文件属性详细信息
- 获取文件属性信息使用stat
- Android常用复杂控件使用(二)--ListView
- Android常用控件--ListView的简单使用
- 最常用的控件ListView简单使用
- Linux文件属性2——使用stat函数获取文件属性
- ListView常用方法及问题解决办法总结
- 简单介绍PHP获取文件属性方法
- IOS获取plist文件属性值的方法
- 简单介绍PHP获取文件属性方法
- IOS获取plist文件属性值的方法
- iOS获取plist文件属性值的方法
- 获取文件属性
- 获取文件属性
- 写在Linux七天系列之前(四)—性能测试工具curl-loader(linux)
- python 学习笔记之socket编程——简单的聊天器雏形(server端)
- 写在Linux七天系列之前(五)—性能测试工具curl-loader二---测试分析
- leveldb阅读-Status
- redis 分布式集群之主从同步
- 文件属性获取及控件ListView使用常用方法
- map函数的基本操作
- 开始为Apple Watch进行开发
- 写在Linux七天系列之前(六)—当云端嫁给Ylmf OS
- 疫苗:Java HashMap的死循环
- keygen文件被小红伞自动删除的解决办法
- AppManager管理Activity
- nyoj-33-蛇形填数
- 软考(软件设计师)注意事项(攻略)