91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 0.25M
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2020-12-14
  • 語言: C#
  • 標(biāo)簽: ee??文件??tree??目錄??瀏覽??

資源簡介

使用雙緩沖TreeView,listView,實現(xiàn)目錄文件瀏覽,代碼簡單400行,不閃爍,可顯示文件夾不同狀態(tài)圖標(biāo),可應(yīng)用于自定義的文件對話框等,可根據(jù)需要自行繼續(xù)簡化。

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Management;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Disk1
{
    public partial class Form1 : Form
    {
        public static class getIcon
        {
            [DllImport("Shell32.dll")]
            static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, uint uFlags);

            struct SHFILEINFO
            {
                public IntPtr hIcon;
                public int iIcon;
                public int dwAttributes;
                public char szDisplayName;
                public char szTypeName;
            }

            static public Icon GetFileIcon(string fileName, bool smallIcon)
            {
                SHFILEINFO fi = new SHFILEINFO();
                Icon ic = null;
                int iTotal = (int)SHGetFileInfo(fileName, 100, ref fi, 0, (uint)(smallIcon ? 273 : 272));
                if (iTotal > 0)
                {
                    ic = Icon.FromHandle(fi.hIcon);
                }
                return ic;
            }
        }

        public class TreeViewEx : TreeView
        {
            protected override void OnHandleCreated(EventArgs e)
            {
                SendMessage(this.Handle, TVM_SETEXTENDEDSTYLE, (IntPtr)TVS_EX_DOUBLEBUFFER, (IntPtr)TVS_EX_DOUBLEBUFFER);
                base.OnHandleCreated(e);
            }
            private const int TVM_SETEXTENDEDSTYLE = 0x1100   44;
            private const int TVM_GETEXTENDEDSTYLE = 0x1100   45;
            private const int TVS_EX_DOUBLEBUFFER = 0x0004;
            [DllImport("user32.dll")]
            private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
        }

        public class ListViewEx : ListView
        {
            public ListViewEx()
            {
                SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
                UpdateStyles();
            }
        }

        TreeViewEx treeView1;
        ListViewEx listView1;

        public static int BrowNumber = 0, BrowRecord = 0, AssNumber = 0;

        public class RecordBrow
        {
            public string Dir_Name;
            public RecordBrow(string _name)
            {
                Dir_Name = _name;
                BrowNumber  = 1;
            }
        }
        public static List<RecordBrow> recordBrows = new List<RecordBrow>();

        public class FileAssociated
        {
            public int Id;
            public string AssociatedType;
            public Bitmap AssociatedIcon;
            public FileAssociated(int _id, string _type, Bitmap _icon)
            {
                Id = _id;
                AssociatedType = _type;
                AssociatedIcon = _icon;
            }
        }
        public static List<FileAssociated> fileAssociateds = new List<FileAssociated>();

        public class DirectoryFile
        {
            public string Fullname;
            public string DFname;
            public string DFtype;
            public int DFicon;
            public string DFtime;
            public long DFsize;
            public int DFflag;
            public DirectoryFile(string _full, string _name, string _type,int _icon, string _time,long _size,int _flag)
            {
                Fullname = _full;
                DFname = _name;
                DFtype = _type;
                DFicon = _icon;
                DFtime = _time;
                DFsize = _size;
                DFflag = _flag;
            }
        }
        public static List<DirectoryFile> directoryFiles = new List<DirectoryFile>();

        public Form1()
        {
            InitializeComponent();
            treeView1 = new TreeViewEx()
            {
                ItemHeight = 22,
                Size = new Size(376, 546),
                Location = new Point(12, 41),
                Font = new Font("微軟雅黑", 9),
                ImageList = imageList1,
                ShowLines = false,
                ShowRootLines = false,
                ShowPlusMinus = false,
            };
            treeView1.NodeMouseClick  = treeView1_NodeMouseClick;
            this.Controls.Add(treeView1);

            listView1 = new ListViewEx()
            {
                Size = new Size(515, 547),
                Location = new Point(442, 40),
                Font = new Font("微軟雅黑", 9),
                View = View.Details,
                GridLines = false,
                SmallImageList = imageList2,
                FullRowSelect = true,
            };
            listView1.Columns.Add("文件名", 120, HorizontalAlignment.Left);
            listView1.Columns.Add("文件類型", 120, HorizontalAlignment.Left);
            listView1.Columns.Add("修改時間", 120, HorizontalAlignment.Left);
            listView1.Columns.Add("大小", 120, HorizontalAlignment.Left);
            listView1.DoubleClick  = ListView1_DoubleClick;
            this.Controls.Add(listView1);

            ManagementObjectCollection queryCollection = getDrives();
            treeView1.Nodes.Clear();
            foreach (ManagementObject mo in queryCollection)
            {
                TreeNode node1 = new TreeNode();
                node1.Text = mo["Name"].ToString();
                node1.Name = mo["Name"].ToString()   "\\";
                node1.ImageIndex = 0;
                node1.Tag = 0;
                treeView1.Nodes.Add(node1);
            }
            get_SubDirFile(treeView1.Nodes[0].Name);
            SearchNode(treeView1.Nodes, treeView1.Nodes[0].Name);

            recordBrows.Add(new RecordBrow(treeView1.Nodes[0].Name));
        }

        protected ManagementObjectCollection getDrives()
        {
            ManagementObjectSearcher query = new ManagementObjectSearcher("SELECT * From Win32_LogicalDisk ");
            ManagementObjectCollection queryCollection = query.Get();
            return queryCollection;
        }

        public void get_SubDirFile(string _path)
        {
            directoryFiles.Clear();
            listView1.Items.Clear();
            DirectoryInfo dir = new DirectoryInfo(_path);
            try
            {
                DirectoryInfo[] subDirector = dir.GetDirectories();
                for (int i = 0; i < subDirector.Length; i  )
                {
                    directoryFiles.Add(new DirectoryFile(subDirector[i].FullName, subDirector[i].FullName.Replace(_path, "").Replace("\\", "") ,"文件夾",0 , 
                        subDirector[i].LastWriteTime.ToShortDateString()   subDirector[i].LastWriteTime.ToShortTimeString(),0,0));
                }
            } catch { }

            DirectoryInfo Files = new DirectoryInfo(_path);
            try
            {
                FileInfo[] files = Files.GetFiles("*.*");
                for (int i = 0; i < files.Length; i  )
                {
                    string _type = GetFileTypeDesection(files[i].Extension);
                    int img_Index = 0;
                    var _fa = fileAssociateds.Where(fa=>fa.AssociatedType==_type).ToList();
                    if (_fa.Count<1)
                    {
                        Bitmap _bmp = new Bitmap(20, 20);
                        Graphics g = Graphics.FromImage(_bmp);
                        g.DrawImage(getIcon.GetFileIcon(files[i].FullName, true).ToBitmap(),new PointF(2,2));
                        imageList2.Images.Add(_bmp);
                        AssNumber  = 1;
                        img_Index = AssNumber;
                    }  else
                    {
                        img_Index = _fa[0].Id   1;
                    }
                    directoryFiles.Add(new DirectoryFile(files[i].FullName, files[i].FullName.Replace(_path, "").Replace("\\", ""), _type, img_Index, 
                        files[i].LastWriteTime.ToShortDateString()  files[i].LastWriteTime.ToShortTimeString(), files[i].Length,1));
                }
            } catch { }
            listView1.BeginUpdate();
            for (int i=0;i<directoryFiles.Count;i  )
            {
                ListViewItem lvi = new ListViewItem();
                lvi.ImageIndex = directoryFiles[i].DFicon;
                lvi.Text = directoryFiles[i].DFname;
                lvi.SubItems.Add(directoryFiles[i].DFtype);
                lvi.SubItems.Add(directoryFiles[i].DFtime);
                if (directoryFiles[i].DFflag==0) lvi.SubItems.Add("");
                else lvi.SubItems.Add(directoryFiles[i].DFsize.ToString("N0"));
                listView1.Items.Add(lvi);
            }
            listView1.EndUpdate();
        }

        public void get_SubDir()
        {
            if (treeView1.SelectedNode.Nodes.Count < 1)
            {
                DirectoryInfo dir = new DirectoryInfo(treeView1.SelectedNode.Name);
                try
                {
                    DirectoryInfo[] subDirector = dir.GetDirectories();
                    for (int i = 0; i < subDirector.Length; i  )
                    {
                        TreeNode node1 = new TreeNode();
                        node1.Name = subDirector[i].FullName;
                        node1.Tag = 1;
                        node1.ImageIndex = 2;
                        node1.SelectedImageIndex = 2;
                        DirectoryInfo has_sub = new DirectoryInfo(node1.Name);
                        try
                        {
                            DirectoryInfo[] hasDir = has_sub.GetDirectories();
                            if (hasDir.Length < 1)
                            {
                                node1.ImageIndex = 4;
                                node1.SelectedImageIndex = 4;
                                node1.Tag = 4;
                            }
                        }
                        catch
                        {
                            node1.ImageIndex = 4;
                            node1.SelectedImageIndex = 4;
                            node1.Tag = 4;
                        }
                        node1.Text = node1.Name.Replace(treeView1.SelectedNode.Name, "").Replace("\\", "");
                        treeView1.SelectedNode.Nodes.Add(node1);
                    }
                }
                catch { }
            }
        }

        private void SearchNode(TreeNodeCollection tnds, string text)
        {
            foreach (TreeNode tnd in tnds)
            {
                if (tnd.Name.Equals(text))   
                {
                    treeView1.SelectedNode = tnd;
                    break;
                }
                if (tnd.Nodes.Count != 0)
                {
                    SearchNode(tnd.Nodes, text);
                }
            }
            textBox1.Text = text;
            treeView1.Focus();
        }

        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            Cursor = Cursors.WaitCursor;
            get_SubDirFile(e.Node.Name);
            SearchNode(treeView1.Nodes, e.Node.Name);
            get_SubDir();
            if (e.Node.Nodes.Count < 1)
            {
                if ((int)e.Node.Tag == 0)
                {
                    e.Node.SelectedImageIndex = 0;
                    e.Node.ImageIndex = 0;
                }
                else
                if ((int)e.Node.Tag == 1)
                {
                    e.Node.SelectedImageIndex = 4;
                    e.Node.ImageIndex = 4;
                }
            }
            else
            {
                if (e.Node.IsExpanded)
                {
                    e.Node.Collapse();
                    if ((int)e.Node.Tag == 0)
                    {
                        e.Node.SelectedImageIndex = 0;
                        e.Node.ImageIndex = 0;
                    }
                    else
                    if ((int)e.Node.Tag == 1)
                    {
                        e.Node.SelectedImageIndex = 2;
                        e.Node.ImageIndex = 2;
                    }
                    setchild(e.Node);
                }
                else
                {
                    e.Node.Expand();
                    if ((int)e.Node.Tag == 0)
                    {
                        e.Node.SelectedImageIndex = 1;
                        e.Node.ImageIndex = 1;
                    }
                    else
                    if ((int)e.Node.Tag == 1)
                    {
                        e.Node.SelectedImageIndex = 3;
                        e.Node.ImageIndex = 3;
                    }
                }
            }
            Cursor = Cursors.Default;
            if (e.Node.Name!=recordBrows[BrowNumber-1].Dir_Name) // 最后瀏覽記錄不相同就記錄
            {
                BrowRecord  = 1;
                recordBrows.Add( new RecordBrow(e.Node.Name) );
            }
        }

        private void ListView1_DoubleClick(object sender, EventArgs e)
        {
            var items = listView1.SelectedItems;
            Cursor = Cursors.WaitCursor;
            int _index = listView1.Items[listView1.SelectedIndices[0]].Index;
            if (directoryFiles[_index].DFflag == 0)
            {
                if (directoryFiles[_index].Fullname != recordBrows[BrowNumber - 1].Dir_Name)
                {
                    BrowRecord  = 1;
                    recordBrows.Add(new RecordBrow(directoryFiles[_index].Fullname));
                }

                textBox1.Text = directoryFiles[_index].Fullname;
                SearchNode(treeView1.Nodes, directoryFiles[_index].Fullname);
                get_SubDirFile(directoryFiles[_index].Fullname);
                get_SubDir();
            }
            Cursor = Cursors.Default;
        }

        private void setchild(TreeNode node)
        {
            foreach (TreeNode child in node.Nodes)
            {
                if ((int)child.Tag == 0)
                {
                    child.ImageIndex = 0;
                } else
                if ((int)child.Tag == 1)
                {
                    child.ImageIndex = 2;
                }
                setchild(child);
            }
        }

        // 前進(jìn)
        private void button1_Click(object sender, EventArgs e)
        {
            int _reco = (BrowRecord   1) > (BrowNumber - 1) ? (BrowNumber - 1) : (BrowRecord   1);
            if (_reco != BrowRecord)
            {
                BrowRecord = _reco;
                SearchNode(treeView1.Nodes, recordBrows[BrowRecord].Dir_Name);
                get_SubDirFile(recordBrows[BrowRecord].Dir_Name);
            }
            treeView1.Focus();
        }

        // 后退
        private void button2_Click(object sender, EventArgs e)
        {
            int _reco = (BrowRecord - 1) < 0 ? 0 : (BrowRecord - 1);
            if (_reco != BrowRecord)
            {
                BrowRecord = _reco;
                SearchNode(treeView1.Nodes, recordBrows[BrowRecord].Dir_Name);
                get_SubDirFile(recordBrows[BrowRecord].Dir_Name);
            }
            treeView1.Focus();
        }

        public static string GetFileTypeDesection(string _ext)
        {
            string value;
            try
            {
                string desc = (string)Registry.ClassesRoot.OpenSubKey(_ext).GetValue(null);
                if (desc != null) value = (string)Registry.ClassesRoot.OpenSubKey(desc).GetValue(null);
                else value = _ext.Replace(".", "")   " 文件";
            } catch
            {
                value = _ext.Replace(".","")   " 文件";
            }
            return value;
        }
    }
}


資源截圖

代碼片段和文件信息

using?Microsoft.Win32;
using?System;
using?System.Collections.Generic;
using?System.Drawing;
using?System.IO;
using?System.Linq;
using?System.Management;
using?System.Runtime.InteropServices;
using?System.Windows.Forms;

namespace?Disk1
{
????public?partial?class?Form1?:?Form
????{
????????public?static?class?getIcon
????????{
????????????[DllImport(“Shell32.dll“)]
????????????static?extern?int?SHGetFileInfo(string?pszPath?uint?dwFileAttributes?ref?SHFILEINFO?psfi?int?cbFileInfo?uint?uFlags);

????????????struct?SHFILEINFO
????????????{
????????????????public?IntPtr?hIcon;
????????????????public?int?iIcon;
????????????????public?int?dwAttributes;
????????????????public?char?szDisplayName;
????????????????public?char?szTypeName;
????????????}

????????????sta

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

????..A..H.?????53760??2019-02-03?19:23??Disk1\.vs\Disk1\v15\.suo

?????文件??????????0??2019-01-30?08:00??Disk1\.vs\Disk1\v15\Server\sqlite3\db.lock

?????文件?????626688??2019-02-03?11:35??Disk1\.vs\Disk1\v15\Server\sqlite3\storage.ide

?????文件??????32768??2019-02-03?18:55??Disk1\.vs\Disk1\v15\Server\sqlite3\storage.ide-shm

?????文件????4140632??2019-02-03?19:23??Disk1\.vs\Disk1\v15\Server\sqlite3\storage.ide-wal

?????文件????????189??2019-01-30?08:00??Disk1\Disk1\App.config

?????文件??????27136??2019-02-03?19:23??Disk1\Disk1\bin\Debug\Disk1.exe

?????文件????????189??2019-01-30?08:00??Disk1\Disk1\bin\Debug\Disk1.exe.config

?????文件??????42496??2019-02-03?19:23??Disk1\Disk1\bin\Debug\Disk1.pdb

?????文件???????3645??2019-02-03?19:20??Disk1\Disk1\Disk1.csproj

?????文件??????16223??2019-02-03?19:23??Disk1\Disk1\Form1.cs

?????文件???????5522??2019-02-03?19:20??Disk1\Disk1\Form1.Designer.cs

?????文件??????19639??2019-02-03?19:20??Disk1\Disk1\Form1.resx

?????文件???????1443??2019-02-03?07:54??Disk1\Disk1\obj\Debug\DesignTimeResolveAssemblyReferences.cache

?????文件???????7168??2019-02-03?19:20??Disk1\Disk1\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache

?????文件?????????42??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.csproj.CoreCompileInputs.cache

?????文件????????978??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.csproj.FileListAbsolute.txt

?????文件???????1012??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.csproj.GenerateResource.cache

?????文件??????27136??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.exe

?????文件???????9054??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.Form1.resources

?????文件??????42496??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.pdb

?????文件????????180??2019-02-03?19:23??Disk1\Disk1\obj\Debug\Disk1.Properties.Resources.resources

?????文件??????????0??2019-02-02?08:00??Disk1\Disk1\obj\Debug\TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs

?????文件??????????0??2019-02-02?08:00??Disk1\Disk1\obj\Debug\TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs

?????文件??????????0??2019-02-02?08:00??Disk1\Disk1\obj\Debug\TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs

?????文件????????517??2019-01-30?08:00??Disk1\Disk1\Program.cs

?????文件???????1308??2019-01-30?08:00??Disk1\Disk1\Properties\AssemblyInfo.cs

?????文件???????2823??2019-01-30?08:00??Disk1\Disk1\Properties\Resources.Designer.cs

?????文件???????5612??2019-01-30?08:00??Disk1\Disk1\Properties\Resources.resx

?????文件???????1092??2019-01-30?08:00??Disk1\Disk1\Properties\Settings.Designer.cs

............此處省略20個文件信息

評論

共有 條評論