public class FolderTree:System.Windows.Forms.TreeView,ISupportInitialize
    {
        string _rootFolder = "";
        bool _showFiles = true;
        private System.Windows.Forms.ImageList imageList1;
        private IContainer components;
        bool _inInit = false;
        public FolderTree()
        {
            Thread td = new Thread(Onstrar);
            td.Start();
            td.Name = "Thhread";
            td.IsBackground = true;
        }        private void Onstrar()
        {
            
        }
        [Category("Behavior"), Description("预发布的根目录树"), DefaultValue("c:\\")]
        public string RootFolder
        {
            get { return _rootFolder; }
            set {
                _rootFolder = value;
                if(!_inInit)
                    InitializeTree();
            }
        }        [Category("Behavior"),
      Description("是否显示文件."),
      DefaultValue(true)]
        public bool ShowFiles
        {
            get { return _showFiles; }
            set { _showFiles = value; }
        }        [Browsable(false)]
        public string SelectedFolder
        {
            get
            {
                if (this.SelectedNode is FolderNode)
                    return ((FolderNode)this.SelectedNode).FolderPath;                return "";
            }
        }        private void InitializeTree()
        {
            if (!this.DesignMode)
            {
                FolderNode rootNode = new FolderNode(_rootFolder);
                LoadTree(rootNode);
                this.Nodes.Clear();
                this.Nodes.Add(rootNode);
            }
        }        private void LoadTree(FolderNode folder)
        {
            //base.ImageList = imageList1;
            string[] dirs = Directory.GetDirectories(folder.FolderPath);
            foreach (string dir in dirs)
            {
                FolderNode tmpfolder = new FolderNode(dir);
                folder.Nodes.Add(tmpfolder);
                
                LoadTree(tmpfolder);
                this.ImageList = imageList1;
                folder.ImageIndex = 1;
            }
            if (_showFiles)
            {                string[] files = Directory.GetFiles(folder.FolderPath);
                foreach (string file in files)
                {
                    FileNode fnode = new FileNode(file);
                    folder.Nodes.Add(fnode);
                    
                    this.ImageList = imageList1;
                    folder.ImageIndex = 0;
                }            }
        }        public void BeginInit()
        {
            _inInit = true;
        }        public void EndInit()
        {
            if (_rootFolder != "")
            {
                InitializeTree();
            }
            _inInit = false;
        }        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FolderTree));
            this.imageList1 = new System.Windows.Forms.ImageList(this.components);
            this.SuspendLayout();
            // 
            // imageList1
            // 
            this.imageList1.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList1.ImageStream")));
            this.imageList1.TransparentColor = System.Drawing.Color.Transparent;
            this.imageList1.Images.SetKeyName(0, "MenuForm.ico");
            this.imageList1.Images.SetKeyName(1, "CLSDFOLD.ICO");
            // 
            // FolderTree
            // 
            this.LineColor = System.Drawing.Color.Black;
            this.ResumeLayout(false);        }    }在页面上我添加了一个imagelist控件 在这里使用 后图片显示不出来  难道这样不行吗 改 求救 

解决方案 »

  1.   


     private void Buy_chuzhi_ka_Load(object sender, EventArgs e)
    {
     DataSet ds = KaidanQueryListBLL.DsqueryServiceListAtKaidanUI(LoginInfo.loginCompany.id);
                treeView1.ImageList = this.imageList1;
                CreateTreeView(treeView1.Nodes, ds, null);
    }
    /// <summary>
            /// 创建DataSet的方法
            /// </summary>
            /// <param Name="nodes">TreeView的根节点</param>
            /// <param Name="ds">Dataset数据集合</param>
            /// <param Name="pid">节点的父</param>
            /// add by zyl
            private void CreateTreeView(TreeNodeCollection nodes, DataSet ds, string pid)
            {
                nodes.Clear();
                
                string sql="";
                //定义筛选条件
                if (pid == null)
                {
                    sql = string.Format("pid is null");
                }
                else
                {
                    sql = string.Format("pid='{0}'", pid);
                }
                //从Dataset中筛选符合条件的行的集合
                DataRow[] drr = ds.Tables[0].Select(sql);            //遍历获得行的集合
                foreach (DataRow dr in drr)
                {
                    //创建TreeView节点
                    TreeNode tnode = new TreeNode();
                    
                    //添加到根节点中
                  
                    //设置显示的文本
                    //tnode.ImageUrl = "images/foldericon1.gif";
                    if (dr["normal_price"].ToString() != "")
                    {
                        tnode.Text = dr["Name"].ToString() + "---" + dr["normal_price"];
                        tnode.SelectedImageIndex = 2;
                        tnode.ImageIndex = 2;
                    }
                    else
                    {
                        tnode.Text = dr["Name"].ToString();
                        tnode.SelectedImageIndex = 1;
                        tnode.ImageIndex = 0;
                    }
                     tnode.Name = dr["Id"].ToString();
                    if (ds.Tables[0].Columns.Contains("face_value"))
                    {
                        tnode.Tag = dr["Name"].ToString() + "---" + dr["face_value"];
                    }
                    else
                    {
                        tnode.Tag = dr["Name"].ToString();
                    }
                    //递归调用方法
                    nodes.Add(tnode);
                    CreateTreeView(tnode.Nodes, ds, dr["Id"].ToString());
                    //从Dataset中删除已经添加的行,提高访问效率
                    ds.Tables[0].Rows.Remove(dr);            }
            }