强烈强烈请求知道的人说一下下
我在TreeView的字节点当中,能不能添加一个控件
类似  -- --A(父结点)
       B(子结点)      X(button)-控件然后能X控件的事件控制子节点的删除。。

解决方案 »

  1.   

    间接实现的话,有没有什么好的提示啊。。高人啊。等待。。winform下有没有类似div的可以点击隐藏,再点出现的效果
      

  2.   

    在winforms下面吗?那用第三方控件吧。DevExpress
    Infragistics
      

  3.   


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;namespace WindowsApplication217
    {
        public partial class Form1 : Form
        {
            TreeView TV = new TreeView();        public Form1()
            {
                InitializeComponent();            TV.Parent = this;
                TV.Dock = DockStyle.Fill;
                TV.ItemHeight = 30; 
                
                TreeNode Root=TV.Nodes.Add("根");            AddTextBoxChildNode(Root, "1");
                AddTextBoxChildNode(Root, "2");
                AddTextBoxChildNode(Root, "3");            TV.AfterExpand += new TreeViewEventHandler(TV_AfterExpand);
                TV.AfterCollapse += new TreeViewEventHandler(TV_AfterCollapse); 
            }        void TV_AfterCollapse(object sender, TreeViewEventArgs e)
            {
                ChangeTextBoxVisible(e.Node,false);
            }        void TV_AfterExpand(object sender, TreeViewEventArgs e)
            {
                ChangeTextBoxVisible(e.Node, true);
            }        void ChangeTextBoxVisible(TreeNode ParentNode,bool Visible)
            {
                foreach (TreeNode ChildNode in ParentNode.Nodes)
                {
                    TextBox TB = (TextBox)ChildNode.Tag;
                    TB.Location = ChildNode.Bounds . Location;
                    TB.Visible = Visible;
                }
            }        void AddTextBoxChildNode(TreeNode ParentNode, String Text)
            {
                TreeNode Node = ParentNode.Nodes.Add(Text);
                
                TextBox TB = new TextBox();
                TB.Parent = TV;
                TB.Text = Text;
                TB.Visible = false;
                TB.TextChanged += new EventHandler(TB_TextChanged);
                TB.Tag = Node; 
                Node.Tag = TB;
            }        void TB_TextChanged(object sender, EventArgs e)
            {
                TextBox TB=(TextBox)sender;
                TreeNode Node = (TreeNode)TB.Tag;            Node.Text = TB.Text;
            }
        }
    }
      

  4.   

    最好再加入某个TextBox获得焦点事件时触发TreeView的选中节点事件
      

  5.   

    楼上的大哥,,你介个不对。。我不是要的这个效果我不要node里面是可输入的text,
    我要的效果是node那列还是label显示,但是最后面有一个x的图点图删除,类似那个gridview的自定义控件一样
      

  6.   

    大同小异吧
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Drawing.Drawing2D;namespace WindowsApplication217
    {
        public partial class Form1 : Form
        {
            TreeView TV = new TreeView();        public Form1()
            {
                InitializeComponent();            TV.Parent = this;
                TV.Dock = DockStyle.Fill;
                TV.ItemHeight = 30;            TreeNode Root = TV.Nodes.Add("根");            AddDeleteButtonChildNode(Root, "1");
                AddDeleteButtonChildNode(Root, "2");
                AddDeleteButtonChildNode(Root, "3");            TV.AfterExpand += new TreeViewEventHandler(TV_AfterExpand);
                TV.AfterCollapse += new TreeViewEventHandler(TV_AfterCollapse);
            }        void TV_AfterCollapse(object sender, TreeViewEventArgs e)
            {
                ChangeDeleteButtonVisible(e.Node, false);
            }        void TV_AfterExpand(object sender, TreeViewEventArgs e)
            {
                ChangeDeleteButtonVisible(e.Node, true);
            }        void ChangeDeleteButtonVisible(TreeNode ParentNode, bool Visible)
            {
                foreach (TreeNode ChildNode in ParentNode.Nodes)
                {
                    Button B = (Button)ChildNode.Tag;
                    B.Location = ChildNode.Bounds.Location;
                    B.Left += ChildNode.Bounds.Width;   
                    B.Visible = Visible;
                }
            }        void AddDeleteButtonChildNode(TreeNode ParentNode, String Text)
            {
                TreeNode Node = ParentNode.Nodes.Add(Text);            Button B = new Button();
                B.Parent = TV;
                B.Text = "删除";
                B.Visible = false;
                B.Click += new EventHandler(B_Click);            B.Tag = Node;
                Node.Tag = B;
            }        void B_Click(object sender, EventArgs e)
            {
                Button B = (Button)sender;
                TreeNode Node = (TreeNode)B.Tag;
                TreeNode ParentNode = Node.Parent;             B.Dispose(); 
                Node.Remove();            ChangeDeleteButtonVisible(ParentNode, true); // 刷新重新定位按钮
            }
        }
    }
      

  7.   

    楼上高人高人我先把这个整成usercontrol再试试。有问题再问你哈
      

  8.   

    楼上的大哥在不在这个子节点还有个图
    (图)aaAa                                (按钮)
    这样的一个效果,我图怎么加进去。而且文本部分的长度怎么设置啊
      

  9.   

    设置treeview的ImageList
    然后设置每个节点的ImageIndex
    长度是动态的,可以设置按钮的起始距离