`
lovnet
  • 浏览: 6883066 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

用TreeView控件实现资源管理器(显示本地硬盘下所有文件夹和文件,并可以浏览图片)(示例代码下载)

阅读更多

(一).说明

用TreeView控件实现资源管理器,显示本地硬盘下所有文件夹和文件,并可以浏览图片

(二).图片示例

(三).代码

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.IO;

namespace 图像格式转II
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class FormMain : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeViewDir;
private System.Windows.Forms.Splitter splitter1;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.PictureBox pictureBox;
/// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null;

private Bitmap bitmap;
//public void Bitmap(string filename,bool useIcm);//**********
public FormMain()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
pictureBox.Top=treeViewDir.Top;
pictureBox.Left=treeViewDir.Left;
pictureBox.Width=panel1.Width;
pictureBox.Height=panel1.Height;
bitmap=null;
FillDirTree();
}

/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}

#region Windows Form Designer generated code
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.treeViewDir = new System.Windows.Forms.TreeView();
this.splitter1 = new System.Windows.Forms.Splitter();
this.panel1 = new System.Windows.Forms.Panel();
this.pictureBox = new System.Windows.Forms.PictureBox();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// treeViewDir
//
this.treeViewDir.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(0)), ((System.Byte)(192)), ((System.Byte)(192)));
this.treeViewDir.Dock = System.Windows.Forms.DockStyle.Left;
this.treeViewDir.ImageIndex = -1;
this.treeViewDir.Location = new System.Drawing.Point(0, 0);
this.treeViewDir.Name = "treeViewDir";
this.treeViewDir.SelectedImageIndex = -1;
this.treeViewDir.Size = new System.Drawing.Size(136, 373);
this.treeViewDir.TabIndex = 0;
this.treeViewDir.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewDir_AfterSelect);
this.treeViewDir.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeViewDir_BeforeExpand);
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(136, 0);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(8, 373);
this.splitter1.TabIndex = 1;
this.splitter1.TabStop = false;
//
// panel1
//
this.panel1.Controls.Add(this.pictureBox);
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel1.Location = new System.Drawing.Point(144, 0);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(360, 373);
this.panel1.TabIndex = 2;
this.panel1.Resize += new System.EventHandler(this.panel1_Resize);
//
// pictureBox
//
this.pictureBox.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(192)), ((System.Byte)(192)), ((System.Byte)(255)));
this.pictureBox.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox.Location = new System.Drawing.Point(0, 0);
this.pictureBox.Name = "pictureBox";
this.pictureBox.Size = new System.Drawing.Size(360, 373);
this.pictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pictureBox.TabIndex = 0;
this.pictureBox.TabStop = false;
//
// FormMain
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(504, 373);
this.Controls.Add(this.panel1);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.treeViewDir);
this.Name = "FormMain";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "图像浏览";
this.panel1.ResumeLayout(false);
this.ResumeLayout(false);

}
#endregion

private void FillDirTree()
{
string[] drivers=Environment.GetLogicalDrives();
for(int i=0;i<drivers.Length;i++)
{
Console.WriteLine("i={0}",i);
if(PlatformInvokeKernel32.GetDriveType(drivers[i])==PlatformInvokeKernel32.DRIVE_FIXED)
{
DirNode root=new DirNode(drivers[i]);
treeViewDir.Nodes.Add(root);
AddDirs(root);
}
}
}
private void AddDirs(TreeNode node)
{
try
{
DirectoryInfo dir=new DirectoryInfo(GetPathFromNode(node));
DirectoryInfo[] e=dir.GetDirectories();
FileInfo[] f=dir.GetFiles();
string name;
for(int i=0;i<e.Length;i++)
{
name=e[i].Name;
if(!name.Equals(".")&&!name.Equals(".."))
{
node.Nodes.Add(new DirNode(name));
}
}
for(int i=0;i<f.Length;i++)
{
name=f[i].Name;
node.Nodes.Add(new DirNode(name));
}
}
catch
{
}
}
private string GetPathFromNode(TreeNode node)
{
if(node.Parent==null)
{
return node.Text;
}
return Path.Combine(GetPathFromNode(node.Parent),node.Text);
}
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new FormMain());
}

private void panel1_Resize(object sender, System.EventArgs e)
{
pictureBox.Top=treeViewDir.Top;
pictureBox.Left=treeViewDir.Left;
if(bitmap!=null)
{
if(bitmap.Width>bitmap.Height)
{
pictureBox.Width=panel1.Width;
pictureBox.Height=
(int)((double) bitmap.Height*panel1.Width/bitmap.Width);
}
else
{
pictureBox.Height=panel1.Height;
pictureBox.Width=
(int)((double) bitmap.Width*panel1.Height/bitmap.Height);
}
}
else
{
pictureBox.Width=panel1.Width;
pictureBox.Height=panel1.Height;
}
pictureBox.Refresh();
}

private void treeViewDir_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
if(bitmap!=null)
{
bitmap.Dispose();
}
try
{
string fileName=GetPathFromNode(e.Node);
bitmap=new Bitmap(fileName);
FileInfo f=new FileInfo(fileName);
if(bitmap.Width>bitmap.Height)
{
pictureBox.Width=panel1.Width;
pictureBox.Height=
(int)((double) bitmap.Height*panel1.Width/bitmap.Width);
}
else
{
pictureBox.Height=panel1.Height;
pictureBox.Width=
(int)((double) bitmap.Width*panel1.Height/bitmap.Height);
}
pictureBox.Image=bitmap;
this.Text="图像浏览"+f.Name;
}
catch
{
pictureBox.Width=panel1.Width;
pictureBox.Height=panel1.Height;
}
}

private void treeViewDir_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
DirNode nodeExpanding=(DirNode)e.Node;
if(!nodeExpanding.SubDirectoriesAdded)
{
AddSubDirs(nodeExpanding);
}
}
private void AddSubDirs(DirNode node)
{
for(int i=0;i<node.Nodes.Count;i++)
{
AddDirs(node.Nodes[i]);
}
node.SubDirectoriesAdded=true;
}
}
}

(四).示例代码下载

http://www.cnblogs.com/Files/ChengKing/TreeView_WinForm.rar

分享到:
评论

相关推荐

    C# 系统应用之TreeView控件显示树状磁盘路径并在ListView显示文件

    http://blog.csdn.net/eastmount/article/details/21241313主要讲述使用C# winForm实现类似于资源管理器的界面,通过TreeView控件显示"我的电脑"所有磁盘文件树状目录,并点击结点文件夹能在右边的ListView中显示...

    使用树控件显示磁盘目录

    - 每个目录或文件被视为树控件的一个节点,根节点为驱动器号(如"C:"),子节点是该驱动器下的目录和文件。 3. **创建和管理节点**: - 使用`InsertItem`函数向树控件插入新节点,为每个目录创建一个新的TVITEM...

    ASP.NET 模仿资源管理器浏览你的硬盘

    在ASP.NET中,我们可以使用多种技术来实现特定的功能,例如模仿Windows资源管理器来浏览硬盘上的文件系统。标题提到的"ASP.NET 模仿资源管理器浏览你的硬盘"是一个示例项目,旨在展示如何在Web页面上创建一个类似...

    多文档界面及控件

    在本示例中,结合了Treeview和ListView控件,实现了类似资源管理器的文件浏览体验,用户可以查看文件系统结构,选择并打开文件。 “磁盘文件访问”是指程序能够读取、写入或执行存储在磁盘上的文件。这涉及到文件...

    c#资源管理器.rar

    2. **文件查看器**:资源管理器通常有一个界面,显示当前目录下的所有文件和子目录。这可以通过C#的Windows Forms或WPF(Windows Presentation Foundation)来构建,利用`ListView`或`TreeView`控件来显示文件系统...

    完整的资源管理器,附源代码。

    资源管理器是计算机系统中用于浏览、管理和操作文件和文件夹的重要工具,它在Windows操作系统中扮演着核心角色。在编程领域,特别是C#这样的高级编程语言中,开发者经常需要创建自定义的资源管理器来满足特定的需求...

    c#资源管理器

    1. 文件和目录浏览:C#资源管理器的核心功能之一就是允许用户浏览本地文件系统,包括硬盘、网络驱动器、USB设备等。通过树形结构显示目录,用户可以方便地在不同的目录间导航。 2. 多视图模式:提供“列表”和...

    c# 基于TreeView递归调用遍历系统盘符的应用实例

    本实例主要探讨如何利用`TreeView`控件结合递归方法来遍历并显示计算机中的系统盘符,包括其中的文件夹和文件。下面将详细讲解这一过程的关键知识点。 首先,我们需要了解`TreeView`控件的基本使用。`TreeView`控件...

    vc++ 应用源码包_6

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_5

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_1

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    树控件

    1. 文件系统浏览器:Windows资源管理器就是一个经典的例子,它用树控件展示硬盘上的文件和文件夹结构。 2. 菜单系统:许多软件的主菜单采用树控件,用户可以按需展开不同功能模块。 3. 数据分类:数据库管理系统、...

    vc++ 应用源码包_2

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 应用源码包_3

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    明日科技C#示例源码.part03

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...

    明日科技C#示例源码.part04

    C#示例源码 C#示例 C#源码 C#示例源代码 C#源代码 注:一共五部分,请全部下载完成后,放同一目录下解决即可。 目录: 第1章 窗体及菜单设计 实例001 自定义最大化、最小化和关闭按钮 2 实例002 磁性窗体的...

    图象ComboBox.rar_COMBOBOX_imagelist

    本主题将详细探讨如何利用图像增强ComboBox的功能,以及如何从本地硬盘导入图片并加载到ImageList中,然后将其应用于ComboBox。 **一、ComboBox控件** ComboBox是Windows应用程序中常用的一种控件,它结合了下拉...

    明日科技C#示例源码

    实例021 从DataGridView控件中拖放数据到TreeView控件 78 第3章 图形图像及多媒体应用 实例022 生成中文验证码 86 实例023 生成图片缩略图 88 实例024 不失真压缩图片 90 实例025 批量图像格式...

    精彩编程与编程技巧-深入SERIPTING RUNTIME LIBRARY...

    下面的示例代码展示了如何获取所有可用驱动器,并列出它们的类型。 ```vb Option Explicit Dim fsoSystem As New FileSystemObject Dim fsoDrives As Drives Dim fsoDrive As Drive Private Sub Form_Load() Dim ...

Global site tag (gtag.js) - Google Analytics