windows文件系统左侧那样的导航栏是怎么作出来的? 如题,请教一下! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 using System;using System.Text;using System.Drawing;using System.Collections;using System.ComponentModel;using System.IO;using System.Windows.Forms;using System.Data;using System.Xml;using System.Runtime.InteropServices; namespace CSharpWinForm{ /**//// <summary> /// Form1 的摘要说明。 /// </summary> public class Form1 : System.Windows.Forms.Form { private System.Windows.Forms.TreeView treeView1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.ListView listView1; private System.Windows.Forms.ColumnHeader columnHeader1; private System.Windows.Forms.ColumnHeader columnHeader2; private System.Windows.Forms.ColumnHeader columnHeader3; private System.Windows.Forms.ColumnHeader columnHeader4; private System.Windows.Forms.Splitter splitter1; private DirectoryInfo folder; // 用于保存目录信息 private static string driveLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MenuItem menuItem2; private System.Data.Odbc.OdbcConnection odbcConnection1; // 用于列举驱动器盘符 /**//// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Windows 窗体设计器支持所必需的 // InitializeComponent(); // // TODO: 在 InitializeComponent 调用后添加任何构造函数代码 // } /**//// <summary> /// 清理所有正在使用的资源。 /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码 /**//// <summary> /// 设计器支持所需的方法 - 不要使用代码编辑器修改 /// 此方法的内容。 /// </summary> private void InitializeComponent() { this.treeView1 = new System.Windows.Forms.TreeView(); this.textBox1 = new System.Windows.Forms.TextBox(); this.listView1 = new System.Windows.Forms.ListView(); this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); this.columnHeader4 = new System.Windows.Forms.ColumnHeader(); this.splitter1 = new System.Windows.Forms.Splitter(); this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.menuItem1 = new System.Windows.Forms.MenuItem(); this.menuItem2 = new System.Windows.Forms.MenuItem(); this.odbcConnection1 = new System.Data.Odbc.OdbcConnection(); this.SuspendLayout(); // // treeView1 // this.treeView1.Dock = System.Windows.Forms.DockStyle.Left; this.treeView1.ImageIndex = -1; this.treeView1.Location = new System.Drawing.Point(0, 0); this.treeView1.Name = "treeView1"; this.treeView1.SelectedImageIndex = -1; this.treeView1.Size = new System.Drawing.Size(200, 573); this.treeView1.TabIndex = 0; this.treeView1.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeSelect); this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand); // // textBox1 // this.textBox1.Dock = System.Windows.Forms.DockStyle.Top; this.textBox1.Location = new System.Drawing.Point(200, 0); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(592, 21); this.textBox1.TabIndex = 1; this.textBox1.Text = "textBox1"; // // listView1 // this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader1, this.columnHeader2, this.columnHeader3, this.columnHeader4}); this.listView1.Dock = System.Windows.Forms.DockStyle.Fill; this.listView1.Location = new System.Drawing.Point(200, 21); this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(592, 552); this.listView1.TabIndex = 2; this.listView1.View = System.Windows.Forms.View.Details; // // columnHeader1 // this.columnHeader1.Text = "名称"; this.columnHeader1.Width = 120; // // columnHeader2 // this.columnHeader2.Text = "大小"; this.columnHeader2.Width = 100; // // columnHeader3 // this.columnHeader3.Text = "类型"; this.columnHeader3.Width = 120; // // columnHeader4 // this.columnHeader4.Text = "时间"; this.columnHeader4.Width = 140; // // splitter1 // this.splitter1.Location = new System.Drawing.Point(200, 21); this.splitter1.Name = "splitter1"; this.splitter1.Size = new System.Drawing.Size(3, 552); this.splitter1.TabIndex = 3; this.splitter1.TabStop = false; // // mainMenu1 // this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem1}); // // menuItem1 // this.menuItem1.Index = 0; this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItem2}); this.menuItem1.Text = "文件"; // // menuItem2 // this.menuItem2.Index = 0; this.menuItem2.Text = "新建"; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(6, 14); this.ClientSize = new System.Drawing.Size(792, 573); this.Controls.Add(this.splitter1); this.Controls.Add(this.listView1); this.Controls.Add(this.textBox1); this.Controls.Add(this.treeView1); this.Menu = this.mainMenu1; this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); } #endregion /**//// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } private void fillTree(TreeView tv) { DirectoryInfo directory; string sCurPath = ""; // 重新清空 tv.Nodes.Clear(); // 将硬盘上的所有的驱动器都列举出来 foreach( char c in driveLetters ) { sCurPath = c + ":\\"; try { // 获得该路径的目录信息 directory = new DirectoryInfo(sCurPath); // 如果获得的目录信息正确,则将它添加到目录树视中 if ( directory.Exists == true ) { TreeNode newNode = new TreeNode(directory.FullName); tv.Nodes.Add(newNode); // 添加新的节点到根节点 getSubDirs(newNode); // 调用getSubDirs()函数,检查该驱动器上的任何存在子目录 } } catch( Exception doh) { Console.WriteLine(doh.Message); } } } private void getSubDirs( TreeNode parent ) { DirectoryInfo directory; try { // 如果还没有检查过这个文件夹,则检查之 if ( parent.Nodes.Count == 0 ) { directory = new DirectoryInfo(parent.FullPath); foreach( DirectoryInfo dir in directory.GetDirectories()) { // 新建一个数节点,并添加到目录树视 TreeNode newNode = new TreeNode(dir.Name); parent.Nodes.Add(newNode); } } foreach(TreeNode node in parent.Nodes) { // 如果还没有检查过这个文件夹,则检查 if (node.Nodes.Count == 0) { directory = new DirectoryInfo(node.FullPath); // 检查该目录上的任何子目录 foreach( DirectoryInfo dir in directory.GetDirectories()) { // 新建一个数节点,并添加到目录树视 TreeNode newNode = new TreeNode(dir.Name); node.Nodes.Add(newNode); } } } } catch( Exception doh ) { Console.WriteLine(doh.Message); } } private void fillListView(ListView lv, string strPath) { DirectoryInfo directory = new DirectoryInfo(strPath); lv.Items.Clear(); foreach( DirectoryInfo dir in directory.GetDirectories()) { ListViewItem item = new ListViewItem(dir.Name); item.SubItems.Add(string.Empty); item.SubItems.Add("文件夹"); item.SubItems.Add(string.Empty); lv.Items.Add(item); } foreach(FileInfo file in directory.GetFiles()) { ListViewItem item = new ListViewItem(file.Name); item.SubItems.Add((file.Length / 1024).ToString() + " KB"); item.SubItems.Add(file.Extension + "文件"); item.SubItems.Add(file.LastWriteTime.ToString()); lv.Items.Add(item); } } private string fixPath( TreeNode node ) { string sRet = ""; try { sRet = node.FullPath; int index = sRet.IndexOf("\\\\"); if (index > 1 ) { sRet = node.FullPath.Remove(index, 1); } } catch( Exception doh ) { Console.WriteLine(doh.Message); } return sRet; } private void treeView1_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { getSubDirs(e.Node); // 取得选择节点的子文件夹 textBox1.Text = fixPath(e.Node); // 更新文本框内容 folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息 fillListView(listView1, fixPath(e.Node)); } private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e) { getSubDirs(e.Node); // 取得选择节点的子文件夹 textBox1.Text = fixPath(e.Node); // 更新文本框内容 folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息 } }} c# 反序列化JSON数据问题 委托与事件的利弊 2 图片轮显 谁有关于QQ宠物挂机的软件开发资料!!我应如何下手? 阅读器关闭时尝试调用 Read 无效。 数组知识问题!请教! 求助!菜鸟使用多线程后无法正常退出程序的问题。 C#VSTO如何在WinForm中添加整个Excel...就是当这个Excel工作薄是个控件一样添加在WinForm里。 水晶报表 For VS.net不能使用存储过程吗? 哪里可以下vs.net,我的网络速度没问题 自定义Web控件的梆定问题,请高手指点。 axWebBrowser
using System.Text;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
using System.Data;
using System.Xml;
using System.Runtime.InteropServices; namespace CSharpWinForm
{
/**//// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeView1;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.ListView listView1;
private System.Windows.Forms.ColumnHeader columnHeader1;
private System.Windows.Forms.ColumnHeader columnHeader2;
private System.Windows.Forms.ColumnHeader columnHeader3;
private System.Windows.Forms.ColumnHeader columnHeader4;
private System.Windows.Forms.Splitter splitter1; private DirectoryInfo folder; // 用于保存目录信息
private static string driveLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Data.Odbc.OdbcConnection odbcConnection1; // 用于列举驱动器盘符
/**//// <summary>
/// 必需的设计器变量。
/// </summary>
private System.ComponentModel.Container components = null; public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent(); //
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
} /**//// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
} Windows 窗体设计器生成的代码#region Windows 窗体设计器生成的代码
/**//// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.treeView1 = new System.Windows.Forms.TreeView();
this.textBox1 = new System.Windows.Forms.TextBox();
this.listView1 = new System.Windows.Forms.ListView();
this.columnHeader1 = new System.Windows.Forms.ColumnHeader();
this.columnHeader2 = new System.Windows.Forms.ColumnHeader();
this.columnHeader3 = new System.Windows.Forms.ColumnHeader();
this.columnHeader4 = new System.Windows.Forms.ColumnHeader();
this.splitter1 = new System.Windows.Forms.Splitter();
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.odbcConnection1 = new System.Data.Odbc.OdbcConnection();
this.SuspendLayout();
//
// treeView1
//
this.treeView1.Dock = System.Windows.Forms.DockStyle.Left;
this.treeView1.ImageIndex = -1;
this.treeView1.Location = new System.Drawing.Point(0, 0);
this.treeView1.Name = "treeView1";
this.treeView1.SelectedImageIndex = -1;
this.treeView1.Size = new System.Drawing.Size(200, 573);
this.treeView1.TabIndex = 0;
this.treeView1.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeSelect);
this.treeView1.BeforeExpand += new System.Windows.Forms.TreeViewCancelEventHandler(this.treeView1_BeforeExpand);
//
// textBox1
//
this.textBox1.Dock = System.Windows.Forms.DockStyle.Top;
this.textBox1.Location = new System.Drawing.Point(200, 0);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(592, 21);
this.textBox1.TabIndex = 1;
this.textBox1.Text = "textBox1";
//
// listView1
//
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
this.columnHeader1,
this.columnHeader2,
this.columnHeader3,
this.columnHeader4});
this.listView1.Dock = System.Windows.Forms.DockStyle.Fill;
this.listView1.Location = new System.Drawing.Point(200, 21);
this.listView1.Name = "listView1";
this.listView1.Size = new System.Drawing.Size(592, 552);
this.listView1.TabIndex = 2;
this.listView1.View = System.Windows.Forms.View.Details;
//
// columnHeader1
//
this.columnHeader1.Text = "名称";
this.columnHeader1.Width = 120;
//
// columnHeader2
//
this.columnHeader2.Text = "大小";
this.columnHeader2.Width = 100;
//
// columnHeader3
//
this.columnHeader3.Text = "类型";
this.columnHeader3.Width = 120;
//
// columnHeader4
//
this.columnHeader4.Text = "时间";
this.columnHeader4.Width = 140;
//
// splitter1
//
this.splitter1.Location = new System.Drawing.Point(200, 21);
this.splitter1.Name = "splitter1";
this.splitter1.Size = new System.Drawing.Size(3, 552);
this.splitter1.TabIndex = 3;
this.splitter1.TabStop = false;
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2});
this.menuItem1.Text = "文件";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "新建";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(792, 573);
this.Controls.Add(this.splitter1);
this.Controls.Add(this.listView1);
this.Controls.Add(this.textBox1);
this.Controls.Add(this.treeView1);
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.Text = "Form1";
this.ResumeLayout(false); }
#endregion
/**//// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
} private void fillTree(TreeView tv)
{
DirectoryInfo directory;
string sCurPath = ""; // 重新清空
tv.Nodes.Clear(); // 将硬盘上的所有的驱动器都列举出来
foreach( char c in driveLetters )
{
sCurPath = c + ":\\";
try
{
// 获得该路径的目录信息
directory = new DirectoryInfo(sCurPath); // 如果获得的目录信息正确,则将它添加到目录树视中
if ( directory.Exists == true )
{
TreeNode newNode = new TreeNode(directory.FullName);
tv.Nodes.Add(newNode); // 添加新的节点到根节点
getSubDirs(newNode);
// 调用getSubDirs()函数,检查该驱动器上的任何存在子目录
}
}
catch( Exception doh)
{
Console.WriteLine(doh.Message);
}
}
} private void getSubDirs( TreeNode parent )
{
DirectoryInfo directory;
try
{
// 如果还没有检查过这个文件夹,则检查之
if ( parent.Nodes.Count == 0 )
{
directory = new DirectoryInfo(parent.FullPath);
foreach( DirectoryInfo dir in directory.GetDirectories())
{
// 新建一个数节点,并添加到目录树视
TreeNode newNode = new TreeNode(dir.Name);
parent.Nodes.Add(newNode);
}
} foreach(TreeNode node in parent.Nodes)
{
// 如果还没有检查过这个文件夹,则检查
if (node.Nodes.Count == 0)
{
directory = new DirectoryInfo(node.FullPath); // 检查该目录上的任何子目录
foreach( DirectoryInfo dir in directory.GetDirectories())
{
// 新建一个数节点,并添加到目录树视
TreeNode newNode = new TreeNode(dir.Name);
node.Nodes.Add(newNode);
}
}
}
}
catch( Exception doh )
{
Console.WriteLine(doh.Message);
}
} private void fillListView(ListView lv, string strPath)
{
DirectoryInfo directory = new DirectoryInfo(strPath);
lv.Items.Clear();
foreach( DirectoryInfo dir in directory.GetDirectories())
{
ListViewItem item = new ListViewItem(dir.Name);
item.SubItems.Add(string.Empty);
item.SubItems.Add("文件夹");
item.SubItems.Add(string.Empty);
lv.Items.Add(item);
}
foreach(FileInfo file in directory.GetFiles())
{
ListViewItem item = new ListViewItem(file.Name);
item.SubItems.Add((file.Length / 1024).ToString() + " KB");
item.SubItems.Add(file.Extension + "文件");
item.SubItems.Add(file.LastWriteTime.ToString());
lv.Items.Add(item);
}
} private string fixPath( TreeNode node )
{
string sRet = "";
try
{
sRet = node.FullPath;
int index = sRet.IndexOf("\\\\");
if (index > 1 )
{
sRet = node.FullPath.Remove(index, 1);
}
}
catch( Exception doh )
{
Console.WriteLine(doh.Message);
}
return sRet;
} private void treeView1_BeforeSelect(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
getSubDirs(e.Node); // 取得选择节点的子文件夹
textBox1.Text = fixPath(e.Node); // 更新文本框内容
folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息
fillListView(listView1, fixPath(e.Node));
} private void treeView1_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
getSubDirs(e.Node); // 取得选择节点的子文件夹
textBox1.Text = fixPath(e.Node); // 更新文本框内容
folder = new DirectoryInfo(e.Node.FullPath); // 获得它的目录信息
}
}
}