发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
最近,使用到了winform的treeview控件,在网上看了好多关于treeview控件使用方法的介绍都不全面。于是我这个菜鸟进行了写了点东西出来,还请高手不要见笑。自此也就当作是自己学习的一种反省和记录吧,另外朋友们要是不嫌弃的话可以拿去用。闲话少说,上代码:
一 、treeview 控件绑定数据库的操作
关于数据库的绑定,参考了网上高手们写的demo,别笑话我,哈哈。
代码
1 public void AddTree(int ParentID, TreeNode pNode, TreeView productTypeTree) 2 3 { 4 5 string sql = "select category_sn, category_name, parent_sn from st_product_category"; 6 7 DataTable dt = DBHelper.ta(sql, 1); 8 9 TreeNode tn1 = new TreeNode(); 10 11 DataView dvTree = new DataView(dt); 12 13 //过滤ParentID,得到当前的所有子节点 14 15 dvTree.RowFilter = "[parent_sn] = " + ParentID; 16 17 foreach (DataRowView Row in dvTree) 18 19 { 20 21 if (pNode == null) 22 23 { //添加根节点 24 25 tn1.Text = Row["category_name"].ToString(); 26 27 productTypeTree.Nodes.Add(tn1); 28 29 tn1.ExpandAll(); 30 31 AddTree(Int32.Parse(Row["category_sn"].ToString()), tn1, productTypeTree); //再次递归 32 33 } 34 35 else 36 37 { //添加当前节点的子节点 38 39 TreeNode tn2 = new TreeNode(); 40 41 tn2.Text = Row["category_name"].ToString(); 42 43 pNode.Nodes.Add(tn2); 44 45 tn1.ExpandAll(); 46 47 AddTree(Int32.Parse(Row["category_sn"].ToString()), tn2, productTypeTree); //再次递归 48 49 } 50 51 } 52 53 productTypeTree.ExpandAll(); 54 55 }
二、 在为treeview 控件添加右键菜单 (添加节点,删除节点)
在treeview的节点点击事件中添加右键菜单 (TreeView1_NodeMouseClick)
private void TreeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Button != MouseButtons.Right) return; if (e.Node.Level == 0) return; TreeNode currentNode = this.productTypeTree.GetNodeAt(new Point(e.X, e.Y)); ContextMenuStrip cms = new ContextMenuStrip(); if (currentNode != null) { ToolStripMenuItem editAddproduct = new ToolStripMenuItem("添加兄弟节点"); ToolStripMenuItem editAddprChildoduct = new ToolStripMenuItem("添加子节点"); ToolStripMenuItem editDeleteproduct = new ToolStripMenuItem("删除节点"); editAddproduct.Click += new EventHandler(editAddproduct_Click); editAddprChildoduct.Click += new EventHandler(editAddChildProduct_Click); editDeleteproduct.Click += new EventHandler(editDeleteproduct_Click); cms.Items.Add(editAddproduct); cms.Items.Add(editAddprChildoduct); cms.Items.Add(editDeleteproduct); cms.Show(this.productTypeTree, e.X, e.Y); this.productTypeTree.SelectedNode = currentNode; } }
三 实现右键菜单的点击事件
1 添加子节点 2 3 void editAddChildProduct_Click(object sender, EventArgs e) 4 { 5 TreeNode tn = this.productTypeTree.SelectedNode; 6 AddChildNode(tn, "新节点"); 7 this.productTypeTree.ExpandAll(); 8 } 9 //删除节点 10 void editDeleteproduct_Click(object sender, EventArgs e) 11 { 12 TreeNode treenode = this.productTypeTree.SelectedNode; 13 this.DeleteNode(treenode); 14 this.productTypeTree.ExpandAll(); 15 } 16 // 添加兄弟节点 17 void editAddproduct_Click(object sender, EventArgs e) 18 { 19 TreeNode tn = this.productTypeTree.SelectedNode; 20 AddtreeNode(tn, "新节点"); 21 this.productTypeTree.ExpandAll(); 22 } 23 24 //添加兄弟节点 25 private void AddtreeNode(TreeNode Node, string NewNodeName) 26 { 27 TreeNode parentNode = Node.Parent; 28 TreeNode newNode = new TreeNode(); newNode.Text = NewNodeName; 29 if (parentNode != null) 30 { 31 if (!parentNode.Nodes.Contains(newNode)) 32 { 33 parentNode.Nodes.Add(newNode); 34 } 35 else return; 36 } 37 } 38 //添加子节点 39 private void AddChildNode(TreeNode tn, string NewChileName) 40 { 41 TreeNode newChildNode = new TreeNode(); 42 newChildNode.Text = NewChileName; 43 tn.Nodes.Add(newChildNode); 44 } 45 46 //删除节点 47 private void DeleteNode(TreeNode treenode) 48 { 49 if (treenode.Nodes.Count==0) //如果该节点下没有子节点直接删除 50 { 51 this.productTypeTree.Nodes.Remove(treenode); 52 } 53 else if (treenode.Nodes.Count>0)//该节点下有节点 提示是否全部删除该节点的所有内容 54 { 55 if ((MessageBox.Show("是否删除该项目下的所有子项?","警告",MessageBoxButtons.OKCancel,MessageBoxIcon.Warning))==DialogResult.OK) 56 { 57 this.productTypeTree.Nodes.Remove(treenode); 58 } 59 } 60 }
2013-06-11
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
[C#][控件]高级控件
C# TreeView控件动态绑定数据库
C# TreeView控件动态绑定数据库。id:当前的id,context当前节点的值文本,parentid代表当前节点的父节点id.[csharp] view plaincopyprivate void 人员资料管理_Load(object sender, EventArgs e) ...
C#中treeview的操作
使用TreeView中CheckBox
使用TreeView中CheckBox项目设计中要使用TreeView中CheckBox(在TreeView的属性中的CheckBoxes设为ture)。如:本来默认全部是折叠的,...
TreeView绑定无限层级关系类
添加摘要
TreeView CheckBox勾选联动
TreeView CheckBox勾选联动TreeView CheckBox勾选联动2015年10月30日 11:46:56阅读数:1531.3.当选中子节点的时候,要判断它的父节点中的所有子节点,是不是都已经选中,如果都选中则选中父节点。注意...
遍历TreeView所有节点
//加载TreeView下对应的节点所对应的配置 public void LoadCfg(string cfgPath) { if (!File.Exists(cfgPath) || Path.GetExtension(cfgPath) != ".xml") ...
V9.5TreeView 控件
V9.5TreeView 控件。namespace V9._TreeView_控件。//TreeView 控件以层次结构的方式显示节点。//添加子节点 先创建TreeNode对象,然后通过Nodes 的Add 方法创建的treeNode 对象添归为TreeView 节点。pr...
WinForm下的TreeView拖拽操作
WinForm下的TreeView拖拽操作//开始拖动操作事件 private void TreeView_ItemDrag(object sender, ItemDragEventArgs e) { TreeNode tn = e.Item as TreeNode; if ((e...
微信扫码,在手机上查看选中内容