怎么在ListView中追加快捷方式

解决方案 »

  1.   

    /// <summary>
            /// 加载快捷图标的数据
            /// </summary>
            /// <param name="tn"></param>
            protected virtual void initShortcutList(string filePath)
            {
                this.ImageList2.Images.Clear();
                this.ImageList1.Images.Clear();
                lvShortcut.SmallImageList = ImageList1;
                Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 3);
                ImageList1.Images.Add(ic0);
                ImageList2.Images.Add(ic0);            lvShortcut.Clear();
                //设置列表框的表头
                lvShortcut.Columns.Add("文件名", 160, HorizontalAlignment.Left);
                lvShortcut.Columns.Add("文件大小", 120, HorizontalAlignment.Left);
                lvShortcut.Columns.Add("创建时间", 120, HorizontalAlignment.Left);
                lvShortcut.Columns.Add("访问时间", 200, HorizontalAlignment.Left);            //获得当前目录下的所有文件 
                DirectoryInfo curDir = new DirectoryInfo(filePath);//创建目录对象。
                FileInfo[] dirFiles;
                try
                {
                    dirFiles = curDir.GetFiles();
                }
                catch 
                { 
                    return; 
                }            string[] arrSubItem = new string[4];            //文件的创建时间和访问时间。
                int iCount = 0; 
                int iconIndex = 1;//用1,而不用0是要让过0号图标。
                foreach (FileInfo fileInfo in dirFiles)
                {
                    string strFileName = fileInfo.Name;                //如果不是文件pagefile.sys
                    if (!strFileName.Equals("pagefile.sys"))
                    {
                        arrSubItem[0] = strFileName; 
                        arrSubItem[1] = fileInfo.Length + " 字节"; 
                        arrSubItem[2] = fileInfo.CreationTime.ToString();
                        arrSubItem[3] = fileInfo.LastAccessTime.ToString();
                    }
                    else
                    {
                        arrSubItem[1] = "未知大小";
                        arrSubItem[2] = "未知日期";
                        arrSubItem[3] = "未知日期";
                    }
                    
                    //得到每个文件的图标
                    string str = fileInfo.FullName;
                    try
                    {
                        setIcon(ImageList1, str, false);
                        setIcon(ImageList2, str, true);
                    }
                    catch (Exception ex)
                    { 
                        MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); 
                    }
                    
                    //插入列表项    
                    ListViewItem LiItem = new ListViewItem(arrSubItem, iconIndex);
                    lvShortcut.Items.Insert(iCount, LiItem);                iCount++;
                    iconIndex++;
                }                      //以下是向列表框中插入目录,不是文件。获得当前目录下的各个子目录。
                int iItem = 0;            DirectoryInfo Dir = new DirectoryInfo(filePath);
                foreach (DirectoryInfo di in Dir.GetDirectories())
                {
                    string stmp = di.Name;
                    ListViewItem LiItem = new ListViewItem(di.Name, 0);
                    lvShortcut.Items.Insert(iItem, LiItem);
                    iItem++;
                }            // 在大图标、小图标、详细列表切换时调用
                // 大图标:1;小图标:2;详细列表:3
                ListViewAB(1);
            }