首页 > 代码库 > 使用TreeView+ListBox+TxtBox 资料管理器

使用TreeView+ListBox+TxtBox 资料管理器

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;namespace 资料管理器{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        private void Form1_Load(object sender, EventArgs e)        {            //加载类别到TreeView            LoadCategoryToTree(treeView1.Nodes, GetCategoriesByParentId(-1));            //设置TreeView中节点单击的时候显示右键菜单            AddMouseClickShowContentMenu();        }        private void AddMouseClickShowContentMenu()        {            //遍历TreeView的每个节点            SearchNode(treeView1.Nodes);        }        private void SearchNode(TreeNodeCollection treeNodeCollection)        {            foreach (TreeNode item in treeNodeCollection)            {                if (item.Level == 1)                {                    item.ContextMenuStrip = contextMenuStrip1;                }                SearchNode(item.Nodes);            }        }        //递归加载类别信息到TreeView        private void LoadCategoryToTree(TreeNodeCollection treeNodeCollection, List<Category> list)        {            foreach (Category item in list)            {                //把当前节点加到treeNodeCollection集合中                TreeNode tnode = treeNodeCollection.Add(item.TName);                //把当前类别的Id记录到Tag中。                tnode.Tag = item.TId;                //List<Category> listSub = GetCategoriesByParentId(item.TId);                //if (listSub.Count == 0)                //{                //    tnode.ContextMenuStrip = contextMenuStrip1;                //}                LoadCategoryToTree(tnode.Nodes, GetCategoriesByParentId(item.TId));            }        }        private List<Category> GetCategoriesByParentId(int pid)        {            List<Category> list = new List<Category>();            string sql = "select tid,tname from Category where tParentId=@pid";            using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, new SqlParameter("@pid", pid)))            {                if (reader.HasRows)                {                    while (reader.Read())                    {                        Category model = new Category();                        model.TId = reader.GetInt32(0);                        model.TName = reader.GetString(1);                        list.Add(model);                    }                }            }            return list;        }        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)        {            if (e.Node != null)            {                LoadTitleToListBox(e.Node);            }        }        private void LoadTitleToListBox(TreeNode node)        {            //获取当前节点对应的类别id            int categoryId = (int)node.Tag;            //从文章表中查询dtid为categoryId的所有文章            List<ContentInfo> list = GetContentByCategoryId(categoryId);            listBox1.Items.Clear();            //遍历list集合将文章信息加到Listbox中            foreach (var item in list)            {                listBox1.Items.Add(item);            }        }        private List<ContentInfo> GetContentByCategoryId(int categoryId)        {            List<ContentInfo> list = new List<ContentInfo>();            //select did,dname from ContentInfo where dtid=@categoryId            using (SqlDataReader reader = SqlHelper.ExecuteReader("select did,dname from ContentInfo where dtid=@categoryId", new SqlParameter("@categoryId", categoryId)))            {                if (reader.HasRows)                {                    while (reader.Read())                    {                        ContentInfo model = new ContentInfo();                        model.DId = reader.GetInt32(0);                        model.DName = reader.GetString(1);                        list.Add(model);                    }                }            }            return list;        }        private void listBox1_MouseClick(object sender, MouseEventArgs e)        {        }        private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)        {            //ListBox的鼠标双击事件            // e.            if (listBox1.SelectedItem != null)            {                //获取选中项中的文章的Id                ContentInfo article = listBox1.SelectedItem as ContentInfo;                int id = article.DId;                textBox1.Text = GetContentInfoByContentId(id);            }        }        //根据文章Id获取文章内容        private string GetContentInfoByContentId(int id)        {            //string sql = "select dcontent from ContentInfo where did=@id";            //using (SqlDataReader reader = SqlHelper.ExecuteReader(sql, new SqlParameter("@id", id)))            //{            //    if (reader.HasRows)            //    {            //        if (reader.Read())            //        {            //            return reader.GetString(0);            //        }            //    }            //}            //return string.Empty;            string sql = "select dcontent from ContentInfo where did=@id";            return SqlHelper.ExecuteScalar(sql, new SqlParameter("@id", id)).ToString();        }        private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)        {            treeView1.SelectedNode = e.Node;        }        private void 导入文章ToolStripMenuItem_Click(object sender, EventArgs e)        {            if (treeView1.SelectedNode != null)            {                //获取当前选中类别的categoryId                int categoryId = (int)treeView1.SelectedNode.Tag;                openFileDialog1.Multiselect = false;                openFileDialog1.Filter = "txt files (*.txt)|*.txt";                openFileDialog1.FileName = string.Empty;                //导入文章                //1.弹出一个选择路径的一个对话框                DialogResult result = openFileDialog1.ShowDialog();                if (result == System.Windows.Forms.DialogResult.OK)                {                    //获取用户选择的文件的路径                    string path = openFileDialog1.FileName;                    string title = Path.GetFileNameWithoutExtension(path);                    string content = File.ReadAllText(path, System.Text.Encoding.Default);                    //执行insert语句将该文章导入到数据库中                    string sql = "insert into ContentInfo(dtid,dname,dcontent) values(@categoryId,@title,@content)";                    SqlParameter[] pms = new SqlParameter[] {                     new SqlParameter("@categoryId",categoryId),                    new SqlParameter("@title",title),                    new SqlParameter("@content",content)                    };                    //直接执行插入语句                    SqlHelper.ExecuteNonQuery(sql, pms);                }                //重新加载ListBox                LoadTitleToListBox(treeView1.SelectedNode);            }        }    }}

 

使用TreeView+ListBox+TxtBox 资料管理器