C #을 통해 (, 삭제, 이름 바꾸기를 만들 수 있습니다) 디렉토리 트리를 할 수

데이터베이스 테이블 구조 :

테이블 트리를 생성 (
기본 키 NOT NULL, 정수 nd_id
nd_parent 정수,
nd_text VARCHAR (20)
)

 

 

 

코드 파일

시스템을 사용하여;
System.Collections.Generic을 사용함;
System.ComponentModel을 사용함;
System.Data을 사용함;
의 System.Data.SQLClient을 사용함;
System.Drawing을 사용함;
System.Text을 사용함;
System.Windows.Forms을 사용함;

네임 스페이스 트리 구조의 데이터베이스 _
{
    공용 부분 클래스 Form1에 : Form1에
    {
        공공 Form1에 ()
        {
            의 InitializeComponent ();
        }

        보이드를 Form1_Load 개인 (개체 송신자있는 EventArgs E)
        {
            //加载目录树
            gettreeview (); 
        }
        /// <요약>
        ///向数据库传输数据
        /// </ 요약>
        /// <PARAM NAME = "STR"> </ PARAM>
        개인 무효 연결 (문자열 STR)
        {
            문자열 sqlcon = "데이터 소스 = (로컬), 데이터베이스 = treedb; 사용자 ID = sa를; PWD = '' ";
            도록 SqlConnection sqlconn = 새도록 SqlConnection (sqlcon);
            sqlconn.Open ();
            SqlCommand를 COM = 새로운하는 SqlCommand (STR, sqlconn);
            com.ExecuteNonQuery ();
            sqlconn.Close ();


        ///目录树加载
        /// </ 요약>
        개인 무효 gettreeview ()
        {
            문자열은 constr = "데이터 소스 = (로컬)] = treedb 데이터베이스, 사용자 ID = SA; PWD = '' ';
            도록 SqlConnection 사기꾼 = 새로운도록 SqlConnection (constr에);
            con.Open ();
            문자열 sqlstr = "트리에서 선택 *";
            SqlDataAdapter를 SqlDataAdapter를 = 새로운 SqlDataAdapter를 (sqlstr, 사기꾼);
            데이터 세트 (DS) = 새로운 데이터 세트 ();
            sqldataadapter.Fill (DS, "나무");
            con.Close ();

            // 루트 로딩
            TreeNode를 TreeNode를 새로운 새로운 TN = ();
            tn.Text = "시스템 폴더";
            tn.Name = "0";
            tn.Tag = "0";
            TreeView1.Nodes.Add (TN)
            으로 TreeView1 .SelectedNode = TN;

            //加载子结点
            경우 (DS = NULL!)
            {
                의 foreach (ds.Tables 된 DataRow에서 DR [0] .Rows)
                {
                    TN = 새의 TreeNode ();
                    tn.Text DR = [ "nd_text"] ToString ().;
                    tn.Name DR = [ "nd_id"] ToString ().;
                    tn.Tag DR = [ "nd_parent"] ToString ().;
                    (! = treeView1.SelectedNode tn.Tag 있으면)
                    {
                        TreeNode를 [] = tn_temp treeView1.Nodes.Find. (DR [ "nd_parent"] ToString ()에 해당);
                        경우 (tn_temp.Length> 0)
                        {
                        treeView1.SelectedNode tn_temp = [0];
                        }
                    }
                    TreeView1.SelectedNode.Nodes.Add (TN);
                }
            }
            모든 루트 노드가 커서 반환 확장 //
            treeView1.ExpandAll를 ();
            treeView1.SelectedNode = treeView1.TopNode;
        }
        /// <요약>
        // / 노드 추가
        /// </ 요약>
        /// <PARAM NAME = "SENDER"> </ PARAM>
        /// <PARAM NAME = "E"> </ PARAM>
        개인 무효 newToolStripMenuItem_Click (SENDER 개체, EventArgs입니다 E를 )
        {
            TreeNode를 TreeNode를 새로운 새로운 TN = ();
            tn.Text = "새 폴더";
            INT 나 Convert.ToInt32 (treeView1.SelectedNode.Name) =;
            treeView1.SelectedNode.Nodes.Add (TN);

            문자열 STR1, STR2;
            STR1 = "선언 @a 정수, B 정수 세트 @a @ = @b 세트 ()를 트리에서 +1을 최대 (nd_id 해당)" "+ I +";
            STR2 = "트리 (nd_id, nd_parent, nd_text) 값으로 인서트 (a @ B @ '新建文件夹')";
            연결 (STR1 + STR2);
           
            treeView1.Nodes.Clear ();
            () gettreeview; 
        }
        /// <요약>
        ///删除结点
        /// </ 요약>
        /// <PARAM NAME = "발신자"> </ PARAM>
        /// <PARAM NAME = "E"> </ PARAM>
        개인 무효 deleteToolStripMenuItem_Click (객체 송신자있는 EventArgs E)
        {
            경우 (treeView1.SelectedNode.

                INT 나 Convert.ToInt32 (treeView1.SelectedNode.Name) =;
                treeView1.SelectedNode.Remove ();

                str1이 문자열과 str2;
                str1이 = "정수 DECLARE의 @a 세트 @a ="+ I + "";
                과 str2 = "삭제 트리에서 WHERE nd_id @a =";
                연결 (str1과 +과 str2);
            }
            다른
            {
                MessageBox.Show ( "오류!" "이 폴더는 삭제할 수 없습니다, 비어 있지 않은"MessageBoxButtons.OK, MessageBoxIcon.Information를)
                반환;
            }

        }
        /// <요약>
        ///重命名结点
        /// </ 요약>
        /// <PARAM NAME = "발신자"> </ PARAM>
        /// <PARAM NAME = "E"> </ PARAM >
        개인 무효 renameToolStripMenuItem_Click (객체 송신자있는 EventArgs E)
        {
            treeView1.LabelEdit = TRUE;
            treeView1.SelectedNode.BeginEdit ();
        }
        /// <요약>
        ///结点重命名后触发的事件
        /// </ 요약>
        /// <PARAM NAME = "발신자"> </ PARAM>
        /// <PARAM NAME = "E" > </ PARAM>
        개인 무효 treeView1_AfterLabelEdit (객체 송신자

            treeView1.SelectedNode.EndEdit (TRUE);
            treeView1.LabelEdit = 거짓;

            문자열 노드 이름 = e.Label;
            INT 나 Convert.ToInt32 (treeView1.SelectedNode.Name) =;

            str1이 문자열과 str2;
            ; str1이 = '+ 노드 이름 + "" "VARCHAR @a DECLARE SET의 @a = (20 인)' '
            과 str2 ="업데이트 트리 SET nd_text @a = WHERE nd_id = "+ I +" ";
            연결 ( + STR2 STR1);
        }
    }
}
----------------
면책 조항 :이 문서는 CSDN 블로거 원래 기사 "미지의 007"및 BY-SA 저작권 계약, 무단 전재 CC 4.0에 따라입니다 원본이 문에 대한 링크를 포함하십시오.
원본 링크 : HTTPS : //blog.csdn.net/kinwa007/article/details/2801199

추천

출처www.cnblogs.com/ljs-13/p/12109112.html