.net的TreeView控件没有实现OnPaint虚方法,但可以通过重写WndProc方法,在节点上增加一些效果(需要使用Win32库函数)。但这样做也无法修改+/-按钮的显示。
请问有方法可以比较容易地修改TreeView控件的+/-按钮的显示效果而不用重写整个控件吗?

解决方案 »

  1.   

    private void Page_Load(object sender, System.EventArgs e)           {                if(!IsPostBack)                {                     this.AddSingleNode(null,"0"); //找出根节点                }                this.TreeView1.SelectedNodeIndex="";   //不选中任何节点           }             /// <summary>           /// 展开节点时,触发的事件           /// </summary>           /// <param name="sender">TreeView 控件</param>           /// <param name="e"></param>           private void TreeView1_Expand(object sender, Microsoft.Web.UI.WebControls.TreeViewClickEventArgs e)           {                TreeNode nd = this.TreeView1.GetNodeFromIndex(e.Node); //找到触发事件的节点,即正在展开的节点                if(nd.Nodes[0].NodeData=="") //第一次加载,即只有“正在加载……”这一项                {                     this.AddSingleNode(nd,nd.NodeData); //加载子节点                }           }            /// <summary>           /// 只查找、添加单个节点下的子节点           /// </summary>           /// <param name="node">需要添加子节点的 TreeNode</param>           /// <param name="id">该节点的 NodeID </param>           private void AddSingleNode(TreeNode node,string id)           {                if(node!=null && id!="0")                {                     node.Nodes.Clear();//清空节点,主要是把“正在加载……”这一项移除                }                DBSystem.ExecuteSQL tmp = new DBSystem.ExecuteSQL("T");                DataTable dt = tmp.GetDataTable("select * from TreeView where ParentID="+id);//从数据库抓出数据                foreach(DataRow dr in dt.Rows) //历遍所有子节点                {                     TreeNode nd = new TreeNode();                     nd.NavigateUrl=dr["URL"].ToString(); //设置浏览的网址                     nd.NodeData=dr["NodeID"].ToString(); //存放节点 ID                     nd.Text=dr["NodeName"].ToString();   //设置节点名称                      TreeNode child = new TreeNode();     //此节点只作为“nd”展开的依据,并无它意                     child.Text="正在加载……";                     nd.Nodes.Add(child);                     if(node==null|| id=="0")                     {                           this.TreeView1.Nodes.Add(nd);    //添加至根节点                     }                     else                     {                           node.Nodes.Add(nd);              //添加子节点                     }                }           }
      

  2.   

    谢谢。不过我想要的是修改Winforms的TreeView的+/-(expand/collapse)按钮的显示效果。
    我自己已经用重绘的方法实现了,不知道有没有更简单的方法