C#  treeView如何让 右键新增节点处于可编辑状态???如何右键节点让这一项添加到数据库里,我的treeView是4层表结构

解决方案 »

  1.   

    this.treeView1.LabelEdit = true;
      

  2.   

    少打了一句....
    使用this.treeView1.Nodes[0].BeginEdit();来让选定的节点进入编辑状态
    使用this.treeView1.Nodes[0].EndEdit();来让处于编辑状态的节点结束编辑状态
    添加到数据库的话,你需要在事件中提交更改的结果
      

  3.   

    今天不上班就给你多写点....应该清楚了吧
    private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
            {
    //获取右键点击
                if (e.Button == MouseButtons.Right)
                {               
                    e.Node.BeginEdit();               
                }
                
            }
           
            private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
            {
                
              //这里写你想更新到数据库的内容和相关的方法
                //发回数据到数据库
            }
    大概试了下应该没有问题了,记得勾挂事件= =#
      

  4.   

    我的意思是不是你右击某个节点,然后选新增后不是在这个节点下用.add()方法添加了一个节点么,然后然这个添加的节点处于编辑状态,这个怎么弄啊
    我是这么写的
     private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
            {
                if(this.contextMenuStrip1.Items[1].Selected)
                {
                    this.treeView1.LabelEdit = true;
                    node.BeginEdit(); 
                }
                if (this.contextMenuStrip1.Items[0].Selected)//添加
                {
                    this.node.Nodes.Add("");
                    this.treeView1.LabelEdit = true;
                    
                    this.node.BeginEdit();
                }
            }
    这个在哪个右击出现的下拉菜单中写道的,下个if就是,如果选择了添加的菜单,这里怎么写啊,怎么着也要把节点名字写上去吧,让他出于编辑状态再写??
      

  5.   

    楼主你的错别字真多,而且断句很另类,我看得很晕.......
    你是不是要让你新添加的节点处于可编辑的状态,使新添加的节点能够直接编辑其节点名?
    如果是那样你需要在最开始的时候就进行一些设置,你的右键菜单,仅在treeView1_NodeMouseClick事件才能显示添加节点的选项这样才方便你捕获客户想在哪个节点下添加子节点.同时设置一个全局变量treenode,在treeView1_NodeMouseClick事件中将选中节点付给全局变量,当你this.contextMenuStrip1.Items[1].Selected的时候去获取全局变量中的node改变他的状态就好了....你这20分累死俺了,,加分............
      

  6.   

    我已经告诉你方法了啊你自己试下赛在treeView1_NodeMouseClick事件才能显示添加节点的选项这样才方便你捕获客户想在哪个节点下添加子节点.同时设置一个全局变量treenode,在treeView1_NodeMouseClick事件中将选中节点付给全局变量,当你this.contextMenuStrip1.Items[1].Selected的时候去获取全局变量中的node改变他的状态就好了
      

  7.   

    新增节点你要弄清楚是当前级,还是下一级然后增加节点,保存在数据库中。代码如下:
    1.当前级节点增加
    string jlid = "0";
                if (this.treeView1.SelectedNode.Level == 0 || this.treeView1.Nodes.Count == 0)
                {
                    string gccj = "0";
                    string tn = "新根建节点";
                    string fid = "0";
                    string skbh = this.textBox3.Text;
                    string bz = this.textBox1.Text;
                    //id自动生成
                    string sqljlid = "select max(jlid) from lab_jlgs";
                    SqlCommand cmd = new SqlCommand(sqljlid, alluse.Class1.conn1);
                    string id = Convert.ToString(cmd.ExecuteScalar());
                    if (id == "")
                    {
                        jlid = "1";
                    }
                    else
                    {
                        jlid = (Int32.Parse(id) + 1).ToString();
                    }
                    //
                    this.treeView1.SelectedNode = this.treeView1.Nodes.Add(jlid, tn);
                    string str = "insert into lab_jlgs(jlid,gccj,fid,ffmc,skbh,bz) values ('" + jlid + "','" + gccj + "','" + fid + "','" + tn + "','" + skbh + "','" + bz + "') ";
                    SqlCommand mycmd = new SqlCommand(str, alluse.Class1.conn1);
                    mycmd.ExecuteNonQuery();
                    //this.treeView1.SelectedNode.BeginEdit();
                }
                else
                {
                    string tn = "新建节点";
                    //jlid自动生成
                    string sqljlid = "select max(jlid) from lab_jlgs";
                    SqlCommand cmd = new SqlCommand(sqljlid, alluse.Class1.conn1);
                    string id = Convert.ToString(cmd.ExecuteScalar());
                    if (id == "")
                    {
                        jlid = "1";
                    }
                    else
                    {
                        jlid = (Int32.Parse(id) + 1).ToString();
                    }
                    //
                    int j = Convert.ToInt32(this.treeView1.SelectedNode.Parent.Name);
                    string fid = j.ToString();
                    this.treeView1.SelectedNode = this.treeView1.SelectedNode.Parent.Nodes.Add(jlid, tn);
                    string gccj = this.treeView1.SelectedNode.Level.ToString();
                    string skbh = this.textBox3.Text;
                    string bz = this.textBox1.Text;
                    string str = "insert into lab_jlgs(jlid,gccj,fid,ffmc,skbh,bz) values ('" + jlid + "','" + gccj + "','" + fid + "','" + tn + "','" + skbh + "','" + bz + "') ";
                    SqlCommand mycmd = new SqlCommand(str, alluse.Class1.conn1);
                    mycmd.ExecuteNonQuery();
                    //this.treeView1.SelectedNode.BeginEdit();
                }
    把注释的//this.treeView1.SelectedNode.BeginEdit();注释去掉,在加上this.treeView1.LabelEdit = true; 下面的同样。
    2.下一级增加节点
                string tn = "新建节点";
                string jlid;
                //jlid自动生成
                string sqljlid = "select max(jlid) from lab_jlgs";
                SqlCommand cmd = new SqlCommand(sqljlid, alluse.Class1.conn1);
                string id = Convert.ToString(cmd.ExecuteScalar());
                if (id == "")
                {
                    jlid = "1";
                }
                else
                {
                    jlid = (Int32.Parse(id) + 1).ToString();
                }
                //
                int j = Convert.ToInt32(this.treeView1.SelectedNode.Name);
                string fid = j.ToString();
                this.treeView1.SelectedNode = this.treeView1.SelectedNode.Nodes.Add(jlid, tn);
                string gccj = this.treeView1.SelectedNode.Level.ToString();
                string skbh = this.textBox3.Text;
                string bz = this.textBox1.Text;
                string str = "insert into lab_jlgs(jlid,gccj,fid,ffmc,skbh,bz) values ('" + jlid + "','" + gccj + "','" + fid + "','" + tn + "','" + skbh + "','" + bz + "') ";
                SqlCommand mycmd = new SqlCommand(str, alluse.Class1.conn1);
                mycmd.ExecuteNonQuery();
                //this.treeView1.SelectedNode.BeginEdit();
    代码我测试了,没问题,对了,还有一个事件在TreeView事件中就有,有问题加我QQ842560352,注明你是谁?
            private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e)
            {
                if (e.Label != null)
                {
                    string ffmc = e.Label;
                    string jlid = this.treeView1.SelectedNode.Name;
                    string sql = "update lab_jlgs set ffmc='" + ffmc + "' where jlid='" + jlid + "'";
                    SqlCommand cmd = new SqlCommand(sql, alluse.Class1.conn1);
                    cmd.ExecuteNonQuery();
                }
                this.treeView1.LabelEdit = false;
            }
      

  8.   

    TreeNode node = new TreeNode("左键双击此处添加");
                this.treeView1.SelectedNode.Nodes.Add(node);
                this.treeView1.SelectedNode.Expand();
                this.treeView1.LabelEdit = true;
                if (this.treeView1.SelectedNode.LastNode.IsEditing == false)
                    this.treeView1.SelectedNode.LastNode.BeginEdit();
      

  9.   

    LabelEdit = true  and  BeginEdit()同时满足实现