發(fā)文章
發(fā)文工具
撰寫
網文摘手
文檔
視頻
思維導圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉文字
文件清理
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,得到當前的所有子節(jié)點 14 15 dvTree.RowFilter = "[parent_sn] = " + ParentID; 16 17 foreach (DataRowView Row in dvTree) 18 19 { 20 21 if (pNode == null) 22 23 { //添加根節(jié)點 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 { //添加當前節(jié)點的子節(jié)點 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 控件添加右鍵菜單 (添加節(jié)點,刪除節(jié)點)
在treeview的節(jié)點點擊事件中添加右鍵菜單 (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("添加兄弟節(jié)點"); ToolStripMenuItem editAddprChildoduct = new ToolStripMenuItem("添加子節(jié)點"); ToolStripMenuItem editDeleteproduct = new ToolStripMenuItem("刪除節(jié)點"); 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 添加子節(jié)點 2 3 void editAddChildProduct_Click(object sender, EventArgs e) 4 { 5 TreeNode tn = this.productTypeTree.SelectedNode; 6 AddChildNode(tn, "新節(jié)點"); 7 this.productTypeTree.ExpandAll(); 8 } 9 //刪除節(jié)點 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 // 添加兄弟節(jié)點 17 void editAddproduct_Click(object sender, EventArgs e) 18 { 19 TreeNode tn = this.productTypeTree.SelectedNode; 20 AddtreeNode(tn, "新節(jié)點"); 21 this.productTypeTree.ExpandAll(); 22 } 23 24 //添加兄弟節(jié)點 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 //添加子節(jié)點 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 //刪除節(jié)點 47 private void DeleteNode(TreeNode treenode) 48 { 49 if (treenode.Nodes.Count==0) //如果該節(jié)點下沒有子節(jié)點直接刪除 50 { 51 this.productTypeTree.Nodes.Remove(treenode); 52 } 53 else if (treenode.Nodes.Count>0)//該節(jié)點下有節(jié)點 提示是否全部刪除該節(jié)點的所有內容 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條評論
發(fā)表
請遵守用戶 評論公約
[C#][控件]高級控件
C# TreeView控件動態(tài)綁定數據庫
C# TreeView控件動態(tài)綁定數據庫。id:當前的id,context當前節(jié)點的值文本,parentid代表當前節(jié)點的父節(jié)點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.當選中子節(jié)點的時候,要判斷它的父節(jié)點中的所有子節(jié)點,是不是都已經選中,如果都選中則選中父節(jié)點。注意...
遍歷TreeView所有節(jié)點
//加載TreeView下對應的節(jié)點所對應的配置 public void LoadCfg(string cfgPath) { if (!File.Exists(cfgPath) || Path.GetExtension(cfgPath) != ".xml") ...
V9.5TreeView 控件
V9.5TreeView 控件。namespace V9._TreeView_控件。//TreeView 控件以層次結構的方式顯示節(jié)點。//添加子節(jié)點 先創(chuàng)建TreeNode對象,然后通過Nodes 的Add 方法創(chuàng)建的treeNode 對象添歸為TreeView 節(jié)點。pr...
WinForm下的TreeView拖拽操作
WinForm下的TreeView拖拽操作//開始拖動操作事件 private void TreeView_ItemDrag(object sender, ItemDragEventArgs e) { TreeNode tn = e.Item as TreeNode; if ((e...
微信掃碼,在手機上查看選中內容