前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ListView做的demo:显示电脑磁盘文件

ListView做的demo:显示电脑磁盘文件

作者头像
kiki.
发布2022-09-29 08:05:53
5870
发布2022-09-29 08:05:53
举报
文章被收录于专栏:web全栈之路

盘符所在区域是一个lable,命名为labelCurrentPath,最右边lable命名为ViewMode,5种显示方式,使用RadioButton控件,最下边的button作用为显示上一级,显示内容区域当然是ListView了,命名为listViewFilesAndFolders

构造函数:调用两个函数并用根文件夹实例化folderCol StringCollection字符串集合

代码语言:javascript
复制
private System.Collections.Specialized.StringCollection folderCol;

        public Form1()
        {
            InitializeComponent();
            folderCol = new System.Collections.Specialized.StringCollection();
            CreateHeadersAndFillListView();
            PatientListView(@"D:\");
            folderCol.Add(@"D:\");
        }

1.创建列标题

代码语言:javascript
复制
<pre name="code" class="csharp">        private void CreateHeadersAndFillListView()
        {
            ColumnHeader colHead;
            colHead = new ColumnHeader();
            colHead.Text = "Fileame";
            listViewFilesAndFolders.Columns.Add(colHead);

            colHead = new ColumnHeader();
            colHead.Text = "Size";
            listViewFilesAndFolders.Columns.Add(colHead);

            colHead = new ColumnHeader();
            colHead.Text = "Last accessed";
            listViewFilesAndFolders.Columns.Add(colHead);
        }

2.在第一次显示窗体时,最后初始化的是磁盘上的文件和文件夹填充列表视图,通过以下方法实现

代码语言:javascript
复制
//打开的文件路径
        private void PatientListView(string root)
        {
            try
            {
                ListViewItem lvi;
                ListViewItem.ListViewSubItem lvsi;

                if (string.IsNullOrEmpty(root))
                    return;
                DirectoryInfo dir = new DirectoryInfo(root);
                DirectoryInfo[] dirs = dir.GetDirectories();
                FileInfo[] files = dir.GetFiles();

                listViewFilesAndFolders.Items.Clear();
                labelCurrentPath.Text = root;
                listViewFilesAndFolders.BeginUpdate();


                foreach (DirectoryInfo di in dirs)
                {
                    lvi = new ListViewItem();
                    lvi.Text = di.Name;
                    lvi.ImageIndex = 0;
                    lvi.Tag = di.FullName;

                    lvsi = new ListViewItem.ListViewSubItem();
                    lvsi.Text = "";
                    lvi.SubItems.Add(lvsi);
                    lvsi = new ListViewItem.ListViewSubItem();
                    lvsi.Text = di.LastAccessTime.ToString();
                    lvi.SubItems.Add(lvsi);
                    listViewFilesAndFolders.Items.Add(lvi);
                }
                foreach (FileInfo fi in files)
                {
                    lvi = new ListViewItem();
                    lvi.Text = fi.Name;
                    lvi.ImageIndex = 1;
                    lvi.Tag = fi.FullName;

                    lvsi = new ListViewItem.ListViewSubItem();
                    lvsi.Text = fi.Length.ToString();
                    lvi.SubItems.Add(lvsi);

                    lvsi = new ListViewItem.ListViewSubItem();
                    lvsi.Text = fi.LastAccessTime.ToString();
                    lvi.SubItems.Add(lvsi);
                    listViewFilesAndFolders.Items.Add(lvi);
                }

                listViewFilesAndFolders.EndUpdate();
            }
            catch (Exception err)
            {
                MessageBox.Show("Error: "+err.Message);
                //throw;
            }
            //根据列内容自动调整列宽
            listViewFilesAndFolders.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent); 
        }

3.为了允许用户通过双击ListView中的选项来浏览文件夹,需订阅ItemActivate事件

代码语言:javascript
复制
 private void listViewFilesAndFolders_ItemActivate(object sender, EventArgs e)
        {
            System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
            string filename = lw.SelectedItems[0].Tag.ToString();


            if (lw.SelectedItems[0].ImageIndex != 0)
            {
                try
                {
                    System.Diagnostics.Process.Start(filename);
                }
                catch (Exception)
                {
                    return;
                }
            }
            else
            {
                PatientListView(filename);
                folderCol.Add(filename);
            }
            
        }

4.Button处理;

代码语言:javascript
复制
//返回上一级
        private void button1_Click(object sender, EventArgs e)
        {
            if (folderCol.Count > 1)
            {
                PatientListView(folderCol[folderCol.Count - 2].ToString());
                folderCol.RemoveAt(folderCol.Count - 1);
            }
            else
            {
                PatientListView(folderCol[0].ToString());
            }
        }

5.最后修改列表视图的查看类型:

代码语言:javascript
复制
private void radioButtonLargeIcon_CheckedChanged_1(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolders.View = View.LargeIcon;
        }

        private void radioButtonSmallIcon_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolders.View = View.SmallIcon;
        }

        private void radioButtonList_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolders.View = View.List;
        }

        private void radioButtonDetails_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolders.View = View.Details;
        }

        private void radioButtonTile_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rdb = (RadioButton)sender;
            if (rdb.Checked)
                this.listViewFilesAndFolders.View = View.Tile;
        }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档