this.MessageBox("删除成功!");
            TreeNode node = null;
            if(tvModuel.SelectedNode.Parent is TreeNode )
                node = tvModuel.SelectedNode.Parent;            txtTypeName.Text = "";
            txtChild.Text = "";
            readModuelTree();
            if (node != null)
            {
                node.Selected = true;
                node.Expanded = true;
                setParentSelected(node);
            }        public void setParentSelected(TreeNode node)
        {
            if (node.Parent is TreeNode)
            {
                //node.Parent.Selected = true;
                node.Parent.Expanded = true;
                setParentSelected(node.Parent);
            }
        }

解决方案 »

  1.   

    在删除之前展开?那刷新tree后怎么保持原先展开的节点还是展开状态?
      

  2.   

    string strSql = "delete from nlusr_type where typeid='" + tvModuel.SelectedNode.Value + "' or parent='" + tvModuel.SelectedNode.Value + "'";
                TreeNode node = null;
                if (tvModuel.SelectedNode.Parent is TreeNode)
                {
                    tvModuel.SelectedNode.Parent.Selected = true;
                    tvModuel.SelectedNode.Parent.Expanded = true;
                    node = tvModuel.SelectedNode.Parent;
                }
                if (SqlHelper.ExecuteNonQuery(strSql) == 0)
                {
                    this.MessageBox("删除栏目 "+ tvModuel.SelectedNode.Text +" 失败!");
                    return;
                }
                this.MessageBox("删除成功!");
                
                            txtTypeName.Text = "";
                txtChild.Text = "";
                readModuelTree();//刷新treeview
                if (node != null)
                {
                    node.Selected = true;
                    node.Expanded = true;
                    setParentSelected(node);
                                }
      

  3.   

       readModuelTree();//刷新treeview  这个要去掉,刷新后你前面的状态全不存在了.
    去掉这句,然后直接用父节点Remove 当前节点
      

  4.   

    [code]if (tvModuel.SelectedNode.Parent is TreeNode)
                {
                    node = tvModuel.SelectedNode;
                    tvModuel.SelectedNode.Parent.Selected = true;
                    tvModuel.SelectedNode.Parent.Expanded = true;
                    tvModuel.Nodes.Remove(node);
                    //node = tvModuel.SelectedNode.Parent;
                }[/code]这样吧,可是没有刷新删除的节点仍然显示
      

  5.   

    if (tvModuel.SelectedNode.Parent is TreeNode)
                {
                    node = tvModuel.SelectedNode;
                    tvModuel.SelectedNode.Parent.Selected = true;
                    tvModuel.SelectedNode.Parent.Expanded = true;
                    tvModuel.Nodes.Remove(node);
                    //node = tvModuel.SelectedNode.Parent;
                }