?? folderdialog.cs
字號(hào):
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.IO;
using System.Windows.Forms;
namespace NiceTracker.Config
{
/// <summary>
/// Summary description for FolderDialog.
/// </summary>
public class FolderDialog : System.Windows.Forms.Form
{
private System.Windows.Forms.TreeView treeViewFolders;
private const string ROOT_PATH = "\\";
private System.Windows.Forms.ImageList imageList1;
private FolderTreeNode rootNode = null;
private const int icoClosed = 0;
private System.Windows.Forms.TextBox textBoxPath;
private const int icoOpen = 1;
public FolderDialog()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();
//
// TODO: Add any constructor code after InitializeComponent call
//
}
/// <summary>
/// Clean up any resources being used.
/// </summary>
protected override void Dispose( bool disposing )
{
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(FolderDialog));
this.treeViewFolders = new System.Windows.Forms.TreeView();
this.imageList1 = new System.Windows.Forms.ImageList();
this.textBoxPath = new System.Windows.Forms.TextBox();
//
// treeViewFolders
//
this.treeViewFolders.ImageList = this.imageList1;
this.treeViewFolders.Location = new System.Drawing.Point(8, 32);
this.treeViewFolders.Size = new System.Drawing.Size(224, 232);
this.treeViewFolders.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.treeViewFolders_AfterSelect);
//
// imageList1
//
this.imageList1.Images.Add(((System.Drawing.Image)(resources.GetObject("resource"))));
this.imageList1.Images.Add(((System.Drawing.Image)(resources.GetObject("resource1"))));
this.imageList1.ImageSize = new System.Drawing.Size(16, 16);
//
// textBoxPath
//
this.textBoxPath.Location = new System.Drawing.Point(8, 8);
this.textBoxPath.Size = new System.Drawing.Size(224, 20);
this.textBoxPath.Text = "";
//
// FolderDialog
//
this.Controls.Add(this.textBoxPath);
this.Controls.Add(this.treeViewFolders);
this.Text = "FolderDialog";
this.Load += new System.EventHandler(this.FolderDialog_Load);
}
#endregion
private void FolderDialog_Load(object sender, System.EventArgs e)
{
// Create root node
rootNode = new FolderTreeNode( ROOT_PATH, ROOT_PATH );
rootNode.Loaded = true;
rootNode.ImageIndex = icoOpen;
treeViewFolders.Nodes.Add( rootNode );
// Recurse
prepareFolders( rootNode );
treeViewFolders.SelectedNode = rootNode;
rootNode.Expand();
this.treeViewFolders.BeforeExpand += new TreeViewCancelEventHandler(treeViewFolders_BeforeExpand);
}
private void prepareFolders( FolderTreeNode folderTreeNode )
{
string path = folderTreeNode.FolderPath;
string[] folders = Directory.GetDirectories( path );
foreach ( string folder in folders )
{
FolderTreeNode subNode = new FolderTreeNode( getFolderName( folder ), folder );
folderTreeNode.Nodes.Add( subNode );
folderTreeNode.ImageIndex = icoClosed;
FolderTreeNode dummyNode = new FolderTreeNode( "", "" );
dummyNode.IsDummy = true;
subNode.Nodes.Add( dummyNode );
}
}
private void treeViewFolders_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
FolderTreeNode folderTreeNode = e.Node as FolderTreeNode;
if ( !folderTreeNode.Loaded )
{
if ( (folderTreeNode.Nodes[0] as FolderTreeNode).IsDummy )
{
folderTreeNode.Nodes.RemoveAt(0);
}
prepareFolders( folderTreeNode );
folderTreeNode.Loaded = true;
}
}
private void treeViewFolders_AfterSelect(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
FolderTreeNode folderTreeNode = e.Node as FolderTreeNode;
textBoxPath.Text = folderTreeNode.FolderPath;
}
private string getFolderName( string str )
{
int idx = str.LastIndexOf( '\\' );
if ( idx != -1 && str.Length > 1 )
{
int st = idx + 1;
int len = str.Length - st;
return str.Substring( st, len );
}
else
{
return str;
}
}
private string stripExtraSlash(string str)
{
string path = "";
if ( str.Length > 1 && str[0] == '\\' )
path = str.Substring( 1, str.Length - 1 );
else
path = str;
return path;
}
public string SelectedPath
{
get
{
return textBoxPath.Text;
}
set
{
if ( Directory.Exists( value ) )
textBoxPath.Text = value;
else
textBoxPath.Text = ROOT_PATH;
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -