twzheng's cppblog
『站在风口浪尖紧握住鼠标旋转!』 http://www.cnblogs.com/twzheng
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
136 随笔 :: 78 文章 :: 353 评论 :: 0 Trackbacks
<
2024年11月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
公告
【正在找工作,麻烦推荐,感谢!】 【自我评价】 1. 资深软件工程师/项目经理,工作9年,3年经验带开发团队,2年经验项目管理,同时具备IBM大型机(z/OS390, COBOL)和开放平台(C#/Java) 开发经验。 2. 熟悉基金/债券业务系统和信用卡业务,目前是花旗软件直属员工,负责基金/债券系统。 3. 由于家人和小孩都在武汉,迫切想换工作回武汉,理想工作地是金融港和光谷软件园。 【期望职能】 项目经理 | 项目主管 | 高级软件工程师 | 需求工程师 | 其他 【期望行业】 计算机软件 | 互联网/电子商务 | 金融/投资/证券 | 银行 | 信托/担保/拍卖/典当
留言簿
(14)
给我留言
查看公开留言
查看私人留言
随笔分类
(130)
Crystal Report(5)
(rss)
Flash AS 3.0(2)
(rss)
Java学习笔记(3)
(rss)
windows 编程(7)
(rss)
基础知识(27)
(rss)
生活拾趣(42)
(rss)
数据库(14)
(rss)
特别关注(13)
(rss)
网络编程(7)
(rss)
兴趣爱好(10)
(rss)
在线求助
(rss)
文章分类
(87)
AsWing(2)
(rss)
C#(7)
(rss)
C/C++(17)
(rss)
ESFramework(4)
(rss)
Flash ActionScript(16)
(rss)
Java(1)
(rss)
vc++.net(10)
(rss)
windows 编程(3)
(rss)
电脑常识(8)
(rss)
算法和数据结构(3)
(rss)
网络编程(16)
(rss)
新闻分类
(82)
技术·业界(44)
(rss)
其人其事(16)
(rss)
时事政治(22)
(rss)
相册
经典图片
资料图片
收藏夹
(40)
RIA 资料(15)
(rss)
技术资料(14)
(rss)
牛人博客(11)
(rss)
我的连接
CSDN-中国最大的IT技术社区
编程中国
博客园
长大在线
长江大学
我的博客地图
武汉公交网
中华上下五千年
资料源码
code project
codeguru
connectionstrings
devarticles
msdn web cast
sourceforge
VC知识库
程序员联合开发网
罗索工作室
中国协议分析网
中国知网
专注于asp.net源码下载
搜索
积分与排名
积分 - 480107
排名 - 43
最新评论
1. re: 房间手机信号太差,怎么解决?
评论内容较长,点击标题查看
--施卡特
2. re: 友元函数和友元类
还好
--地方
3. re: [转] 网页设计者值得一去的地方!
评论内容较长,点击标题查看
--Check here
4. re: [转] 网页设计者值得一去的地方!
评论内容较长,点击标题查看
--this site
5. re: 友元函数和友元类
@江哲
可以直接访问类的私有变量,无需调用接口函数
--one day
阅读排行榜
1. #ifndef#define#endif的用法(整理)(24842)
2. C#读写INI文件 (19829)
3. 未能加载文件或程序集“CrystalDecisions.CrystalReports.Engine……或它的某一个依赖项(14878)
4. GetQueuedCompletionStatus函数(12712)
5. C# 里面的 #region 是什么意思?(11524)
C#实现“资源管理器”源码(带图标显示)
//
C#资源管理器源码
using
System;
using
System.Drawing;
using
System.Collections;
using
System.ComponentModel;
using
System.Windows.Forms;
using
System.Data;
using
System.IO;
using
System.Runtime.InteropServices;
namespace
myTree
{
/**/
///
<summary>
///
Form1 的摘要说明。
///
</summary>
public
class
Form1 : System.Windows.Forms.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();
}
/**/
///
<summary>
///
清理所有正在使用的资源。
///
</summary>
protected
override
void
Dispose(
bool
disposing)
{
if
(disposing)
{
if
(components
!=
null
)
{
components.Dispose();
}
}
base
.Dispose(disposing);
}
Windows Form Designer generated code
#region
Windows Form Designer generated code
/**/
///
<summary>
///
设计器支持所需的方法 - 不要使用代码编辑器修改
///
此方法的内容。
///
</summary>
private
void
InitializeComponent()
{
this
.components
=
new
System.ComponentModel.Container();
this
.TreeImageList
=
new
System.Windows.Forms.ImageList(
this
.components);
this
.mainMenu1
=
new
System.Windows.Forms.MainMenu(
this
.components);
this
.menuItem1
=
new
System.Windows.Forms.MenuItem();
this
.menuItem2
=
new
System.Windows.Forms.MenuItem();
this
.menuItem3
=
new
System.Windows.Forms.MenuItem();
this
.menuItem4
=
new
System.Windows.Forms.MenuItem();
this
.menuItem5
=
new
System.Windows.Forms.MenuItem();
this
.menuItem6
=
new
System.Windows.Forms.MenuItem();
this
.menuItem7
=
new
System.Windows.Forms.MenuItem();
this
.listView1
=
new
System.Windows.Forms.ListView();
this
.textBox1
=
new
System.Windows.Forms.TextBox();
this
.treeView1
=
new
System.Windows.Forms.TreeView();
this
.panel2
=
new
System.Windows.Forms.Panel();
this
.label1
=
new
System.Windows.Forms.Label();
this
.button1
=
new
System.Windows.Forms.Button();
this
.panel1
=
new
System.Windows.Forms.Panel();
this
.splitter1
=
new
System.Windows.Forms.Splitter();
this
.LisrimageList
=
new
System.Windows.Forms.ImageList(
this
.components);
this
.LisrimageList2
=
new
System.Windows.Forms.ImageList(
this
.components);
this
.statusBar1
=
new
System.Windows.Forms.StatusBar();
this
.statusBarPanel1
=
new
System.Windows.Forms.StatusBarPanel();
this
.statusBarPanel2
=
new
System.Windows.Forms.StatusBarPanel();
this
.panel2.SuspendLayout();
this
.panel1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(
this
.statusBarPanel1)).BeginInit();
((System.ComponentModel.ISupportInitialize)(
this
.statusBarPanel2)).BeginInit();
this
.SuspendLayout();
//
//
TreeImageList
//
this
.TreeImageList.ColorDepth
=
System.Windows.Forms.ColorDepth.Depth8Bit;
this
.TreeImageList.ImageSize
=
new
System.Drawing.Size(
16
,
16
);
this
.TreeImageList.TransparentColor
=
System.Drawing.Color.Transparent;
//
//
mainMenu1
//
this
.mainMenu1.MenuItems.AddRange(
new
System.Windows.Forms.MenuItem[]
{
this
.menuItem1,
this
.menuItem2,
this
.menuItem3,
this
.menuItem4}
);
//
//
menuItem1
//
this
.menuItem1.Index
=
0
;
this
.menuItem1.Text
=
"
文件
"
;
//
//
menuItem2
//
this
.menuItem2.Index
=
1
;
this
.menuItem2.Text
=
"
编辑
"
;
//
//
menuItem3
//
this
.menuItem3.Index
=
2
;
this
.menuItem3.Text
=
"
显隐
"
;
this
.menuItem3.Click
+=
new
System.EventHandler(
this
.menuItem3_Click);
//
//
menuItem4
//
this
.menuItem4.Index
=
3
;
this
.menuItem4.MenuItems.AddRange(
new
System.Windows.Forms.MenuItem[]
{
this
.menuItem5,
this
.menuItem6,
this
.menuItem7}
);
this
.menuItem4.Text
=
"
列表方式
"
;
//
//
menuItem5
//
this
.menuItem5.Index
=
0
;
this
.menuItem5.Text
=
"
大图标
"
;
this
.menuItem5.Click
+=
new
System.EventHandler(
this
.menuItem5_Click);
//
//
menuItem6
//
this
.menuItem6.Index
=
1
;
this
.menuItem6.Text
=
"
小图标
"
;
this
.menuItem6.Click
+=
new
System.EventHandler(
this
.menuItem6_Click);
//
//
menuItem7
//
this
.menuItem7.Index
=
2
;
this
.menuItem7.Text
=
"
详细列表
"
;
this
.menuItem7.Click
+=
new
System.EventHandler(
this
.menuItem7_Click);
//
//
listView1
//
this
.listView1.Activation
=
System.Windows.Forms.ItemActivation.OneClick;
this
.listView1.Dock
=
System.Windows.Forms.DockStyle.Fill;
this
.listView1.Location
=
new
System.Drawing.Point(
166
,
21
);
this
.listView1.Name
=
"
listView1
"
;
this
.listView1.Size
=
new
System.Drawing.Size(
546
,
369
);
this
.listView1.TabIndex
=
3
;
this
.listView1.UseCompatibleStateImageBehavior
=
false
;
this
.listView1.View
=
System.Windows.Forms.View.SmallIcon;
this
.listView1.ItemActivate
+=
new
System.EventHandler(
this
.listView1_ItemActivate);
//
//
textBox1
//
this
.textBox1.Dock
=
System.Windows.Forms.DockStyle.Top;
this
.textBox1.Location
=
new
System.Drawing.Point(
0
,
0
);
this
.textBox1.Name
=
"
textBox1
"
;
this
.textBox1.Size
=
new
System.Drawing.Size(
712
,
21
);
this
.textBox1.TabIndex
=
5
;
//
//
treeView1
//
this
.treeView1.Anchor
=
((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top
|
System.Windows.Forms.AnchorStyles.Bottom)
|
System.Windows.Forms.AnchorStyles.Left)
|
System.Windows.Forms.AnchorStyles.Right)));
this
.treeView1.ItemHeight
=
18
;
this
.treeView1.Location
=
new
System.Drawing.Point(
0
,
23
);
this
.treeView1.Name
=
"
treeView1
"
;
this
.treeView1.Size
=
new
System.Drawing.Size(
162
,
343
);
this
.treeView1.TabIndex
=
1
;
this
.treeView1.BeforeExpand
+=
new
System.Windows.Forms.TreeViewCancelEventHandler(
this
.treeView1_BeforeExpand_1);
this
.treeView1.AfterSelect
+=
new
System.Windows.Forms.TreeViewEventHandler(
this
.treeView1_AfterSelect_1);
//
//
panel2
//
this
.panel2.BorderStyle
=
System.Windows.Forms.BorderStyle.Fixed3D;
this
.panel2.Controls.Add(
this
.label1);
this
.panel2.Controls.Add(
this
.button1);
this
.panel2.Dock
=
System.Windows.Forms.DockStyle.Top;
this
.panel2.Location
=
new
System.Drawing.Point(
0
,
0
);
this
.panel2.Name
=
"
panel2
"
;
this
.panel2.Size
=
new
System.Drawing.Size(
162
,
22
);
this
.panel2.TabIndex
=
0
;
//
//
label1
//
this
.label1.Dock
=
System.Windows.Forms.DockStyle.Left;
this
.label1.Font
=
new
System.Drawing.Font(
"
宋体
"
, 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((
byte
)(
134
)));
this
.label1.Location
=
new
System.Drawing.Point(
0
,
0
);
this
.label1.Name
=
"
label1
"
;
this
.label1.Size
=
new
System.Drawing.Size(
42
,
18
);
this
.label1.TabIndex
=
1
;
this
.label1.Text
=
"
文件夹
"
;
this
.label1.TextAlign
=
System.Drawing.ContentAlignment.BottomLeft;
//
//
button1
//
this
.button1.Dock
=
System.Windows.Forms.DockStyle.Right;
this
.button1.FlatStyle
=
System.Windows.Forms.FlatStyle.Popup;
this
.button1.Location
=
new
System.Drawing.Point(
140
,
0
);
this
.button1.Name
=
"
button1
"
;
this
.button1.Size
=
new
System.Drawing.Size(
18
,
18
);
this
.button1.TabIndex
=
0
;
this
.button1.Text
=
"
X
"
;
this
.button1.Click
+=
new
System.EventHandler(
this
.button1_Click);
//
//
panel1
//
this
.panel1.Controls.Add(
this
.treeView1);
this
.panel1.Controls.Add(
this
.panel2);
this
.panel1.Dock
=
System.Windows.Forms.DockStyle.Left;
this
.panel1.Location
=
new
System.Drawing.Point(
0
,
21
);
this
.panel1.Name
=
"
panel1
"
;
this
.panel1.Size
=
new
System.Drawing.Size(
162
,
369
);
this
.panel1.TabIndex
=
6
;
//
//
splitter1
//
this
.splitter1.BorderStyle
=
System.Windows.Forms.BorderStyle.Fixed3D;
this
.splitter1.Location
=
new
System.Drawing.Point(
162
,
21
);
this
.splitter1.Name
=
"
splitter1
"
;
this
.splitter1.Size
=
new
System.Drawing.Size(
4
,
369
);
this
.splitter1.TabIndex
=
7
;
this
.splitter1.TabStop
=
false
;
//
//
LisrimageList
//
this
.LisrimageList.ColorDepth
=
System.Windows.Forms.ColorDepth.Depth8Bit;
this
.LisrimageList.ImageSize
=
new
System.Drawing.Size(
16
,
16
);
this
.LisrimageList.TransparentColor
=
System.Drawing.Color.Transparent;
//
//
LisrimageList2
//
this
.LisrimageList2.ColorDepth
=
System.Windows.Forms.ColorDepth.Depth8Bit;
this
.LisrimageList2.ImageSize
=
new
System.Drawing.Size(
16
,
16
);
this
.LisrimageList2.TransparentColor
=
System.Drawing.Color.Transparent;
//
//
statusBar1
//
this
.statusBar1.Location
=
new
System.Drawing.Point(
0
,
390
);
this
.statusBar1.Name
=
"
statusBar1
"
;
this
.statusBar1.Panels.AddRange(
new
System.Windows.Forms.StatusBarPanel[]
{
this
.statusBarPanel1,
this
.statusBarPanel2}
);
this
.statusBar1.Size
=
new
System.Drawing.Size(
712
,
17
);
this
.statusBar1.TabIndex
=
8
;
this
.statusBar1.Text
=
"
statusBar1
"
;
//
//
statusBarPanel1
//
this
.statusBarPanel1.BorderStyle
=
System.Windows.Forms.StatusBarPanelBorderStyle.None;
this
.statusBarPanel1.Name
=
"
statusBarPanel1
"
;
this
.statusBarPanel1.Text
=
"
statusBarPanel1
"
;
this
.statusBarPanel1.Width
=
132
;
//
//
statusBarPanel2
//
this
.statusBarPanel2.BorderStyle
=
System.Windows.Forms.StatusBarPanelBorderStyle.None;
this
.statusBarPanel2.Name
=
"
statusBarPanel2
"
;
this
.statusBarPanel2.Text
=
"
statusBarPanel2
"
;
this
.statusBarPanel2.Width
=
132
;
//
//
Form1
//
this
.AutoScaleBaseSize
=
new
System.Drawing.Size(
6
,
14
);
this
.ClientSize
=
new
System.Drawing.Size(
712
,
407
);
this
.Controls.Add(
this
.listView1);
this
.Controls.Add(
this
.splitter1);
this
.Controls.Add(
this
.panel1);
this
.Controls.Add(
this
.textBox1);
this
.Controls.Add(
this
.statusBar1);
this
.Menu
=
this
.mainMenu1;
this
.Name
=
"
Form1
"
;
this
.Text
=
"
C#实现资源管理器
"
;
this
.panel2.ResumeLayout(
false
);
this
.panel1.ResumeLayout(
false
);
((System.ComponentModel.ISupportInitialize)(
this
.statusBarPanel1)).EndInit();
((System.ComponentModel.ISupportInitialize)(
this
.statusBarPanel2)).EndInit();
this
.ResumeLayout(
false
);
this
.PerformLayout();
}
#endregion
/**/
///
<summary>
///
应用程序的主入口点。
///
</summary>
[STAThread]
static
void
Main()
{
Application.Run(
new
Form1());
}
//
*************************************************************************************
[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
);
}
//
*************************************************************************************
}
}
posted on 2008-07-07 20:06
谭文政
阅读(5019)
评论(0)
编辑
收藏
引用
所属分类:
C#
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
求windows xp 繁体版
C#字符串操纵总结
在MDI多文档界面中,如何使子窗口只显示一次,当运行子窗口时如果已经打开了,则直接显示不再建立窗口的方法
C#实现“资源管理器”源码(带图标显示)
从 DataTable 对象中删除 DataRow 对象 遇到的问题
WPF简介、前景分析、影响程度、WPF资料
C#制作WinForm控件
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 谭文政