ディレクトリツリーを行うためのC#で(、削除、名前の変更を作成することができます)

データベースのテーブル構造:

テーブルツリーを作成する(
主キー整数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();
        }

        ます。private void Form1_Load(オブジェクト送信者、EventArgsの電子)
        {
            //加载目录树
            gettreeview(); 
        }
        /// <要約>
        ///向数据库传输数据
        /// </要約>
        ///ます。<param name = "STR"> </ param>の
        プライベートのボイド接続(文字列str)
        {
            文字列sqlcon =「データソース=(ローカル);データベース= treedb;ユーザID =寺; PWD = '' ";
            SqlConnectionのsqlconn =新しいSqlConnectionオブジェクト(sqlcon)。
            sqlconn.Open();
            SqlCommandオブジェクトCOM =新しいSqlCommandオブジェクト(文字列、sqlconn)。
            com.ExecuteNonQuery();
            sqlconn.Close();


        ///目录树加载
        /// </要約>
        ます。private void gettreeview()
        {
            文字列コンストラクタ= "データソース=(ローカル);データベース= treedb;ユーザID =寺; PWD = ''";
            SqlConnectionのコン=新しいSqlConnectionオブジェクト(コンストラクタ)。
            con.Open();
            文字列sqlstr =「ツリーから選択します*」;
            SqlDataAdapterオブジェクトSqlDataAdapterオブジェクト=新しいSqlDataAdapterオブジェクト(sqlstr、CON);
            データセットDS =新しいデータセット();
            sqldataadapter.Fill(DS、 "木");
            con.Close();

            //ルートローディング
            ツリーノードツリーノードの新しい新TN =();
            tn.Text = "システムフォルダ";
            tn.Name = "0";
            tn.Tag = "0";
            TreeView1.Nodes.Add(TN)
            のTreeView1 .SelectedNode = TN。

            //加载子结点
            IF(!DS = NULL)
            {
                foreachの(ds.TablesでのDataRow DR [0] .Rows)
                {
                    TN =新しいツリーノード()。
                    tn.Text = DR [ "nd_text"]のToString()。
                    tn.Name = DR [ "nd_id"]のToString()。
                    tn.Tag = DR [ "nd_parent"]のToString()。
                    IF(!treeView1.SelectedNode = tn.Tag)
                    {
                        ツリーノード[] 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 = "B @宣言@a整数、セット@a整数=(ツリーからMAX(nd_id)+1を選択)設定@b =" + I + ""。
            STR2 = "木(nd_id、nd_parent、nd_text)値への挿入(@、@ B '新建文件夹')"。
            接続(STR1 + STR2)。
           
            treeView1.Nodes.Clear();
            gettreeview(); 
        }
        /// <要約>
        ///删除结点
        /// </要約>
        /// <PARAM NAME = "送信元"> </ PARAM>
        /// <PARAM NAME = "E"> </ PARAM>
        プライベート無効deleteToolStripMenuItem_Click(オブジェクト送信者、EventArgsの電子)
        {
            場合(treeView1.SelectedNode。

                int型私は、Convert.ToInt32(treeView1.SelectedNode.Name)=。
                treeView1.SelectedNode.Remove();

                STR1列STR2;
                0009 = "整数の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電子)
        {
            treeView1.LabelEdit = TRUE。
            treeView1.SelectedNode.BeginEdit();
        }
        /// <要約>
        ///结点重命名后触发的事件
        /// </要約>
        /// <PARAM NAME = "送信元"> </ PARAM>
        /// <PARAM NAME = "E" > </ param>の
        プライベート無効treeView1_AfterLabelEdit(オブジェクト送信者、

            treeView1.SelectedNode.EndEdit(真の);
            treeView1.LabelEdit = falseは、

            文字列のノード名= e.Label。
            int型私は、Convert.ToInt32(treeView1.SelectedNode.Name)=。

            STR1文字列、STR2、
            STR1 = "VARCHAR @a DECLARE SETの@a =(20)で'" +ノード名+ "'";
            STR2 = "更新ツリーSET nd_text @a = nd_id =" + I + "";
            接続( + STR2 STR1);
        }
    }
}
----------------
免責事項:この記事はCSDNブロガー元の記事"未知の007"で、CC 4.0 BY-SAの著作権契約書に従って、再版元のソースと、この文へのリンクを含めてください。
オリジナルリンクします。https://blog.csdn.net/kinwa007/article/details/2801199

おすすめ

転載: www.cnblogs.com/ljs-13/p/12109112.html