데이터베이스 테이블 구조 :
테이블 트리를 생성 (
기본 키 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