⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeview.cs

📁 浏览器端看到树型目录结构,用户可以完整地看到像windows资源管理器一样的效果
💻 CS
📖 第 1 页 / 共 4 页
字号:
//------------------------------------------------------------------------------
// Copyright (c) 2000-2003 Microsoft Corporation. All Rights Reserved.
//------------------------------------------------------------------------------

namespace Microsoft.Web.UI.WebControls
{
    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing;
    using System.Drawing.Design;
    using System.Data;
    using System.IO;
    using System.Reflection;
    using System.Text.RegularExpressions;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Xml;
    using System.Xml.XPath;
    using System.Xml.Xsl;

    /// <summary>
    /// Event arguments for the OnSelectedIndexChange event
    /// </summary>
    public class TreeViewSelectEventArgs : EventArgs
    {
        private string _oldnodeindex;
        private string _newnodeindex;

        /// <summary>
        /// The previously selected node.
        /// </summary>
        public string OldNode
        {
            get {return _oldnodeindex;}
        }
       
        /// <summary>
        /// The newly selected node.
        /// </summary>
        public string NewNode
        {
            get {return _newnodeindex;}
        }

        /// <summary>
        /// Initializes a new instance of a TreeViewSelectEventArgs object.
        /// </summary>
        /// <param name="strOldNodeIndex">The old node.</param>
        /// <param name="strNewNodeIndex">The new node.</param>
        public TreeViewSelectEventArgs(string strOldNodeIndex, string strNewNodeIndex)
        {
            _oldnodeindex = strOldNodeIndex;
            _newnodeindex = strNewNodeIndex;
        }
    }
    
    /// <summary>
    /// Event arguments for the OnClick event 
    /// </summary>
    public class TreeViewClickEventArgs : EventArgs
    {
        private string _nodeid;

        /// <summary>
        /// The ID of the node that was clicked.
        /// </summary>
        public string Node
        {
            get { return _nodeid; }
        }

        /// <summary>
        /// Initializes a new instance of a TreeViewClickEventArgs object.
        /// </summary>
        /// <param name="node">The ID of the node that was clicked</param>
        public TreeViewClickEventArgs(string node)
        {
            _nodeid = node;
        }
    }

    /// <summary>
    /// Class to eliminate runat="server" requirement and restrict content to approved tags
    /// </summary>
    internal class TreeViewControlBuilder : FilterControlBuilder
    {
        protected override void FillTagTypeTable()
        {
            Add("treenode", typeof(TreeNode));
            Add("treenodetype", typeof(TreeNodeType));
        }
    }

    /// <summary>
    /// Delegate to handle click events on the TreeView.
    /// </summary>
    public delegate void ClickEventHandler(object sender, TreeViewClickEventArgs e);

    /// <summary>
    /// Delegate to handle select events on the TreeView.
    /// </summary>
    public delegate void SelectEventHandler(object sender, TreeViewSelectEventArgs e);

    /// <summary>
    /// TreeView class: Represents a tree.
    /// </summary>
    [
    ParseChildren(false),
    ControlBuilderAttribute(typeof(TreeViewControlBuilder)),
    Designer(typeof(Microsoft.Web.UI.WebControls.Design.TreeViewDesigner)),
    ToolboxBitmap(typeof(Microsoft.Web.UI.WebControls.TreeView)),
    ]
    public class TreeView : BasePostBackControl
    {
        /// <summary>
        /// Event fired when a TreeNode is expanded.
        /// </summary>
        [ResDescription("TreeExpand")]
        public event ClickEventHandler Expand;

        /// <summary>
        /// Event fired when a TreeNode is collapsed.
        /// </summary>
        [ResDescription("TreeCollapse")]
        public event ClickEventHandler Collapse;

        /// <summary>
        /// Event fired when a TreeNode's checkbox is clicked.
        /// </summary>
        [ResDescription("TreeCheck")]
        public event ClickEventHandler Check;

        /// <summary>
        /// Event fired when the selected TreeNode changes.
        /// </summary>
        [ResDescription("TreeSelectedIndexChanged")]
        public event SelectEventHandler SelectedIndexChange;

        private TreeNodeTypeCollection _TreeNodeTypes;
        private TreeNodeCollection _Nodes;
        private bool _bFocused;
        private int _scrollTop;
        private int _scrollLeft;
        private int _parentTop;
        private int _parentLeft;
        private CssCollection _HoverStyle;
        private CssCollection _DefaultStyle;
        private CssCollection _SelectedStyle;
        private bool _bCreated;
        internal ArrayList _eventList;

        /// <summary>
        /// Initializes a new instance of a TreeView.
        /// </summary>
        public TreeView() : base()
        {
            _TreeNodeTypes = new TreeNodeTypeCollection(this);
            _Nodes = new TreeNodeCollection(this);
            _bFocused = false;
            _bCreated = false;
            _HoverStyle = new CssCollection();
            _DefaultStyle = new CssCollection();
            _SelectedStyle = new CssCollection();
            _scrollTop = _scrollLeft = -1;
            _parentTop = _parentLeft = -1;
            _eventList = new ArrayList();
        }

        /// <summary>
        /// Called when a TreeNode expands.
        /// </summary>
        /// <param name="e">Event arguments.</param>
        protected virtual void OnExpand(TreeViewClickEventArgs e)
        {
            if (Expand != null)
                Expand(this, e);
        }

        /// <summary>
        /// Called when a TreeNode collapses.
        /// </summary>
        /// <param name="e">Event arguments.</param>
        protected virtual void OnCollapse(TreeViewClickEventArgs e)
        {
            if (Collapse != null)
                Collapse(this, e);
        }

        /// <summary>
        /// Called when a TreeNode's checkbox is clicked.
        /// </summary>
        /// <param name="e">Event arguments.</param>
        protected virtual void OnCheck(TreeViewClickEventArgs e)
        {
            if (Check != null)
                Check(this, e);
        }
     
        /// <summary>
        /// Called when the selected TreeNode changes.
        /// </summary>
        /// <param name="e">Event arguments.</param>
        protected internal virtual void DoSelectedIndexChange(TreeViewSelectEventArgs e)
        {
            // select/deselect nodes
            TreeNode node = GetNodeFromIndex(e.OldNode);
            if (node != null)
                node.Selected = false;

            node = GetNodeFromIndex(e.NewNode);
            if (node != null)
            {
                node.Selected = true;
                SelectedNodeIndex = e.NewNode;
            }
        }

        /// <summary>
        /// Event handler for selection changes.
        /// </summary>
        /// <param name="e">Event arguments.</param>
        protected internal virtual void OnSelectedIndexChange(TreeViewSelectEventArgs e)
        {
            if (SelectedIndexChange != null)
                SelectedIndexChange(this, e);
        }  

        /// <summary>
        /// Style to use when hovered
        /// </summary>
        [
        Category("Styles"),
        DefaultValue(typeof(CssCollection), ""),
        PersistenceMode(PersistenceMode.Attribute),
        ResDescription("ParentHoverStyle"),
        ]
        public CssCollection HoverStyle
        {
            get 
            {
                return _HoverStyle;
            }
            set 
            {
                _HoverStyle = value;
                if (IsTrackingViewState)
                {
                    ((IStateManager)_HoverStyle).TrackViewState();
                    _HoverStyle.Dirty = true;
                }
            }
        }

        /// <summary>
        /// Default style
        /// </summary>
        [
        Category("Styles"),
        DefaultValue(typeof(CssCollection), ""),
        PersistenceMode(PersistenceMode.Attribute),
        ResDescription("ParentDefaultStyle"),
        ]
        public CssCollection DefaultStyle
        {
            get 
            {
                return _DefaultStyle;
            }
            set
            {
                _DefaultStyle = value;
                if (IsTrackingViewState)
                {
                    ((IStateManager)_DefaultStyle).TrackViewState();
                    _DefaultStyle.Dirty = true;
                }
            }
        }

        /// <summary>
        /// Style to use when selected
        /// </summary>
        [
        Category("Styles"),
        DefaultValue(typeof(CssCollection), ""),
        PersistenceMode(PersistenceMode.Attribute),
        ResDescription("ParentSelectedStyle"),
        ]
        public CssCollection SelectedStyle
        {
            get
            {
                return _SelectedStyle;
            }
            set 
            {
                _SelectedStyle = value;
                if (IsTrackingViewState)
                {
                    ((IStateManager)_SelectedStyle).TrackViewState();
                    _SelectedStyle.Dirty = true;
                }
            }
        }

        /// <summary>
        /// Url of the image to display when not selected, expanded, or hovered
        /// </summary>
        [
        Category("Appearance"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.Attribute),
        Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)),
        ResDescription("TreeImageUrl"),
        ]
        public String ImageUrl
        {
            get
            {
                object str = ViewState["ImageUrl"];
                return ((str == null) ? String.Empty : (String) str); 
            }
            set
            {
                ViewState["ImageUrl"] = value;
            }
        }

        /// <summary>
        /// Url of the image to display when selected
        /// </summary>
        [
        Category("Appearance"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.Attribute),
        Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)),
        ResDescription("TreeSelectedImageUrl"),
        ]
        public String SelectedImageUrl
        {
            get
            {
                object str = ViewState["SelectedImageUrl"];
                return ((str == null) ? String.Empty : (String) str); 
            }
            set
            {
                ViewState["SelectedImageUrl"] = value;
            }
        }

        /// <summary>
        /// Url of the image to display when expanded
        /// </summary>
        [
        Category("Appearance"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.Attribute),
        Editor(typeof(System.Web.UI.Design.ImageUrlEditor), typeof(UITypeEditor)),
        ResDescription("TreeExpandedImageUrl"),
        ]
        public String ExpandedImageUrl
        {
            get
            {
                object str = ViewState["ExpandedImageUrl"];
                return ((str == null) ? String.Empty : (String) str); 
            }
            set
            {
                ViewState["ExpandedImageUrl"] = value;
            }
        }

        /// <summary>
        /// id of the window to target with a navigation upon selecting this node
        /// </summary>
        [
        Category("Behavior"),
        DefaultValue(""),
        PersistenceMode(PersistenceMode.Attribute),
        ResDescription("TreeTarget"),
        ]
        public String Target
        {
            get
            {
                object str = ViewState["Target"];
                return ((str == null) ? String.Empty : (String)str);
            }
            set
            {
                ViewState["Target"] = value;
            }
        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -