找传奇、传世资源到传世资源站!

C# 仿资源管理器源码

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

C# 仿资源管理器源码 C#语言基础-第1张using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data;using System.IO;using System.Runtime.InteropServices;namespace WindowsFormsApplication1{ public partial class Form1 : Form { private System.Windows.Forms.ImageList TreeImageList; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.ListView listView1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.Panel panel2; private System.Windows.Forms.Panel panel1; private System.Windows.Forms.Splitter splitter1; private System.Windows.Forms.Button button1; private System.Windows.Forms.ImageList LisrimageList; private System.Windows.Forms.ImageList LisrimageList2; private System.Windows.Forms.StatusBar statusBar1; private System.Windows.Forms.StatusBarPanel statusBarPanel1; private System.Windows.Forms.StatusBarPanel statusBarPanel2; private System.Windows.Forms.MenuItem menuItem2; private System.Windows.Forms.MenuItem menuItem3; private System.Windows.Forms.MenuItem menuItem4; private System.Windows.Forms.MenuItem menuItem5; private System.Windows.Forms.MenuItem menuItem6; private System.Windows.Forms.MenuItem menuItem7; private System.Windows.Forms.Label label1; //private System.ComponentModel.IContainer components; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 15); TreeImageList.Images.Add(ic0); Icon ic1 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 5); TreeImageList.Images.Add(ic1); Icon ic2 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 7); TreeImageList.Images.Add(ic2); Icon ic3 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 11); TreeImageList.Images.Add(ic3); Icon ic4 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 3); TreeImageList.Images.Add(ic4); Icon ic5 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 4); TreeImageList.Images.Add(ic5); Icon ic6 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 101); TreeImageList.Images.Add(ic6); GetDrive(); } //************************************************************************************* [DllImport("Shell32.dll")] public static extern int ExtractIcon(IntPtr h, string strx, int ii); [DllImport("Shell32.dll")] public static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags); public struct SHFILEINFO { public IntPtr hIcon; public int iIcon; public uint dwAttributes; public char szDisplayName; public char szTypeName; } string strFilePath = ""; //************************************************************************************* protected virtual Icon myExtractIcon(string FileName, int iIndex) { try { IntPtr hIcon = (IntPtr)ExtractIcon(this.Handle, FileName, iIndex); if (!hIcon.Equals(null)) { Icon icon = Icon.FromHandle(hIcon); return icon; } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); } return null; } //************************************************************************************* protected virtual void SetIcon(ImageList imageList, string FileName, bool tf) { SHFILEINFO fi = new SHFILEINFO(); if (tf == true) { int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 16640);//SHGFI_ICON|SHGFI_SMALLICON try { if (iTotal > 0) { Icon ic = Icon.FromHandle(fi.hIcon); imageList.Images.Add(ic); //return ic; } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); } } else { int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 257); try { if (iTotal > 0) { Icon ic = Icon.FromHandle(fi.hIcon); imageList.Images.Add(ic); //return ic; } } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); } } // return null; } //************************************************************************************* public void GetDrive() { treeView1.ImageList = TreeImageList; treeView1.BeginUpdate(); treeView1.Nodes.Clear(); TreeNode RootNode = new TreeNode("我的电脑", 0, 0); treeView1.Nodes.Add(RootNode); int iImageIndex = 2; int iSelectedIndex = 2; string[] astrDrives = Directory.GetLogicalDrives(); foreach (string str in astrDrives) { if (str == "A:\\") { iImageIndex = 1; iSelectedIndex = 1; } else if (str == "G:\\") { iImageIndex = 3; iSelectedIndex = 3; } else { iImageIndex = 2; iSelectedIndex = 2; } TreeNode tnDrive = new TreeNode(str, iImageIndex, iSelectedIndex); treeView1.Nodes[0].Nodes.Add(tnDrive); AddDirectories(tnDrive); if (str == "C:\\") { treeView1.SelectedNode = tnDrive; } } treeView1.EndUpdate(); } //************************************************************************************* void AddDirectories(TreeNode tn) { tn.Nodes.Clear(); string strPath = tn.FullPath; strPath = strPath.Remove(0, 5); //获得当前目录 DirectoryInfo dirinfo = new DirectoryInfo(strPath); DirectoryInfo[] adirinfo; try { adirinfo = dirinfo.GetDirectories(); } catch { return; } int iImageIndex = 4; int iSelectedIndex = 5; foreach (DirectoryInfo di in adirinfo) { if (di.Name == "RECYCLER" || di.Name == "RECYCLED" || di.Name == "Recycled") { iImageIndex = 6; iSelectedIndex = 6; } else { iImageIndex = 4; iSelectedIndex = 5; } TreeNode tnDir = new TreeNode(di.Name, iImageIndex, iSelectedIndex); tn.Nodes.Add(tnDir); } /**/ /* //获得当前目录下的所有文件 FileInfo[] dirFiles; dirFiles=dirinfo.GetFiles(); int iCount=7; foreach (FileInfo fi in dirFiles) { //得到每个文件的图标 string str=fi.FullName; try { SetIcon(TreeImageList,str,false); } catch(Exception ex) { MessageBox.Show(ex.Message,"错误提示",0,MessageBoxIcon.Error);} TreeNode tnDir = new TreeNode(fi.Name, iCount, iCount); tn.Nodes.Add(tnDir); iCount ; } */ } //************************************************************************************* //在大图标、小图标、详细列表切换时调用 protected virtual void ListViewAB(int iii) { if (iii == 1) { LisrimageList2.ImageSize = new Size(32, 32); listView1.LargeImageList = LisrimageList2; if (listView1.View == View.Details || listView1.View == View.SmallIcon) { listView1.View = View.LargeIcon; } } else if (iii == 2) { if (listView1.View == View.Details || listView1.View == View.LargeIcon) { listView1.View = View.SmallIcon; } } else { if (listView1.View == View.LargeIcon || listView1.View == View.SmallIcon) { listView1.View = View.Details; } } } //************************************************************************************* private void treeView1_BeforeExpand_1(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { //base.OnBeforeExpand(e); treeView1.BeginUpdate(); foreach (TreeNode tn in e.Node.Nodes) { AddDirectories(tn); } treeView1.EndUpdate(); } //************************************************************************************* protected virtual void InitList(TreeNode tn) { this.statusBarPanel1.Text = "正在刷新文件夹,请稍等.."; this.Cursor = Cursors.WaitCursor; this.LisrimageList2.Images.Clear(); this.LisrimageList.Images.Clear(); listView1.SmallImageList = LisrimageList; Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 3); LisrimageList.Images.Add(ic0); LisrimageList2.Images.Add(ic0); listView1.Clear(); //设置列表框的表头 listView1.Columns.Add("文件名", 160, HorizontalAlignment.Left); listView1.Columns.Add("文件大小", 120, HorizontalAlignment.Left); listView1.Columns.Add("创建时间", 120, HorizontalAlignment.Left); listView1.Columns.Add("访问时间", 200, HorizontalAlignment.Left); string strPath = tn.FullPath; strPath = strPath.Remove(0, 5); //获得当前目录下的所有文件 DirectoryInfo curDir = new DirectoryInfo(strPath);//创建目录对象。 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(LisrimageList, str, false); SetIcon(LisrimageList2, str, true); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); } //插入列表项 ListViewItem LiItem = new ListViewItem(arrSubItem, iconIndex); listView1.Items.Insert(iCount, LiItem); iCount ; iconIndex ; } strFilePath = strPath; textBox1.Text = strPath; this.statusBarPanel1.Text = strPath; this.statusBarPanel2.Text = "文件数量: " iCount.ToString() "个"; this.Cursor = Cursors.Arrow; //以下是向列表框中插入目录,不是文件。获得当前目录下的各个子目录。 int iItem = 0; DirectoryInfo Dir = new DirectoryInfo(strPath); foreach (DirectoryInfo di in Dir.GetDirectories()) { ListViewItem LiItem = new ListViewItem(di.Name, 0); listView1.Items.Insert(iItem, LiItem); iItem ; } } //************************************************************************************* protected virtual void InitList2(string strName) { this.statusBarPanel1.Text = "正在刷新文件夹,请稍等.."; this.Cursor = Cursors.WaitCursor; this.LisrimageList2.Images.Clear(); this.LisrimageList.Images.Clear(); listView1.SmallImageList = LisrimageList; Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 3); LisrimageList.Images.Add(ic0); LisrimageList2.Images.Add(ic0); listView1.Clear(); //设置列表框的表头 listView1.Columns.Add("文件名", 160, HorizontalAlignment.Left); listView1.Columns.Add("文件大小", 120, HorizontalAlignment.Left); listView1.Columns.Add("创建时间", 120, HorizontalAlignment.Left); listView1.Columns.Add("访问时间", 200, HorizontalAlignment.Left); //获得当前目录下的所有文件 DirectoryInfo curDir = new DirectoryInfo(strName);//创建目录对象。 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(LisrimageList, str, false); SetIcon(LisrimageList2, str, true); } catch (Exception ex) { MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); } //插入列表项 ListViewItem LiItem = new ListViewItem(arrSubItem, iconIndex); listView1.Items.Insert(iCount, LiItem); iCount ; iconIndex ;//必须加在listView1.Items.Insert(iCount,LiItem); } strFilePath = strName;//把路径赋值于全局变量strFilePath textBox1.Text = strName; this.statusBarPanel2.Text = "文件数量: " iCount.ToString() "个"; this.Cursor = Cursors.Arrow; //以下是向列表框中插入目录,不是文件。获得当前目录下的各个子目录。 int iItem = 0;//调用listView1.Items.Insert(iItem,LiItem);时用。不能使用iconIndex。 DirectoryInfo Dir = new DirectoryInfo(strName);//创建目录对象。 foreach (DirectoryInfo di in Dir.GetDirectories()) { ListViewItem LiItem = new ListViewItem(di.Name, 0); listView1.Items.Insert(iItem, LiItem); iItem ; } } //************************************************************************************* private void treeView1_AfterSelect_1(object sender, System.Windows.Forms.TreeViewEventArgs e) { if (e.Node.Text == "我的电脑") { return; } InitList(e.Node); } //************************************************************************************* private void button1_Click(object sender, System.EventArgs e) { this.panel1.Hide(); } //************************************************************************************* private void listView1_ItemActivate(object sender, System.EventArgs e) { string str = Path.Combine(strFilePath, listView1.FocusedItem.Text); try { if (listView1.FocusedItem.SubItems.Count > 1) { System.Diagnostics.Process.Start(str); } else { InitList2(str); } } catch { return; } } //************************************************************************************* private void menuItem3_Click(object sender, System.EventArgs e) { this.panel1.Visible = !panel1.Visible; } //************************************************************************************* private void menuItem5_Click(object sender, System.EventArgs e) { ListViewAB(1); } //************************************************************************************* private void menuItem6_Click(object sender, System.EventArgs e) { ListViewAB(2); } //************************************************************************************* private void menuItem7_Click(object sender, System.EventArgs e) { ListViewAB(3); } //************************************************************************************* }}

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复