• 使用Treeview模拟操作系统的文件系统


    default.aspx 代码:

    <%@ Page language="c#" Codebehind="default.aspx.cs" AutoEventWireup="false" Inherits="OsFilesytem._default" %>
    <%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
    <HTML>
    <HEAD>
    <title>WebForm2</title>
    <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
    <meta name="CODE_LANGUAGE" Content="C#">
    <meta name="vs_defaultClientScript" content="JavaScript">
    <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    </HEAD>
    <body>
    <form id="Form1" method="post" runat="server">
    <iewc:TreeView id="TreeView1" runat="server" AutoPostBack="True" BackColor="#EEEEEE"></iewc:TreeView>
    </form>
    </body>
    </HTML>

    default.aspx.cs代码:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;

    using Microsoft.Web.UI.WebControls;
    using System.IO;

    namespace OsFilesytem
    {
    /// <summary>
    /// WebForm2 的摘要说明。
    /// </summary>
    public class _default : System.Web.UI.Page
    {
    protected Microsoft.Web.UI.WebControls.TreeView TreeView1;

    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!Page.IsPostBack)
    {
    TreeNode newnode=new TreeNode();
    newnode.Text="我的电脑";
    this.TreeView1.Nodes.Add(newnode);

    try 
    {
    string[] drives = System.IO.Directory.GetLogicalDrives();

    foreach (string str in drives)
    {
    TreeNode tmpNd;
    tmpNd=new TreeNode();
    tmpNd.Text=str;
    this.TreeView1.Nodes[0].Nodes.Add(tmpNd);

    //ProcessDirectory(str,tmpNd);
    }

    }
    catch (System.IO.IOException)
    {
    this.Response.Write("I/O错误!");
    }
    catch (System.Security.SecurityException)
    {
    this.Response.Write("没有访问权限!");
    }
    }
    }


    public void ProcessDirectory(string targetDirectory,TreeNode TN)
    {
    if(targetDirectory.ToString()==@"A:\")
    {
    return;
    }

    TreeNode tmpNd;
    try
    {
    // Process the list of files found in the directory
    string [] fileEntries = Directory.GetFiles(targetDirectory);
    foreach(string fileName in fileEntries)
    {
    tmpNd=new TreeNode();

    //只显示文件名
    tmpNd.Text=fileName.Substring(fileName.LastIndexOf(@"\")+1);

    //显示文件 全名(路径+名称)
    //tmpNd.Text=fileName;

    TN.Nodes.Add(tmpNd);
    }

    // Recurse into subdirectories of this directory  
    string [] subdirectoryEntries = Directory.GetDirectories(targetDirectory);
    foreach(string subdirectory in subdirectoryEntries)
    {
    tmpNd=new TreeNode();

    //只显示文件夹名
    tmpNd.Text=subdirectory.Substring(subdirectory.LastIndexOf(@"\")+1);

    //显示文件夹 全名(路径+名称)
    //tmpNd.Text=subdirectory;

    TN.Nodes.Add(tmpNd);

    //ProcessDirectory(subdirectory,tmpNd);
    }
    }
    catch
    {
    }
    }


    /// <summary>
    /// 获得当前结点的全名
    /// </summary>
    /// <param name="TN">当前结点</param>
    /// <returns>全名</returns>
    private string GetFullName(TreeNode TN)
    {
    if(TN.Text=="我的电脑")
    {
    return "我的电脑";
    }
    string str_fullname="";

    while(((TreeNode)TN.Parent).Text!="我的电脑")
    {
    str_fullname = TN.Text + @"\" + str_fullname;
    TN=(TreeNode)TN.Parent;
    }
    str_fullname =TN.Text + str_fullname;
    return str_fullname;
    }

    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.TreeView1.Expand += new Microsoft.Web.UI.WebControls.ClickEventHandler(this.TreeView1_Expand);
    this.Load += new System.EventHandler(this.Page_Load);

    }
    #endregion
    private void TreeView1_Expand(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)
    {
    TreeNode TNS=this.TreeView1.GetNodeFromIndex(e.Node);

    foreach(TreeNode TN in TNS.Nodes)
    {
    this.ProcessDirectory(this.GetFullName(TN),TN);
    }
    }
    }


    OVER
  • 相关阅读:
    UVA 707
    我写了一起 Makefile(一)
    百度mp3接口
    MBProgressHUD -[__NSCFString sizeWithAttributes:]: unrecognized selector问题解决了
    BCM策略路由交换芯片
    HDU 4006 The kth great number AVL解
    PHP进口Excel至MySQL方法
    隐藏Console形式无效(继续1)
    优秀的前端project如何制定一个老师--html学习路径
    地址阵列
  • 原文地址:https://www.cnblogs.com/RobotTech/p/526254.html
Copyright © 2020-2023  润新知