【Winform】TreeView使用汇总
一、拖拽节点到另一个容器Panel中
TreeView控件需要监听:(1)ItemDrag事件(当用户开始拖动节点时发生)。
对于Panel控件:
(1)开启Panel的AlowDrop属性设置为true 表示允许进行拖入操作
(2)DragEnter事件 在将对象拖入控件的边界时发生。
(3)DragDrop事件 在完成拖放操作时发生。
private void OnTreeView1ItemDrag(object sender, ItemDragEventArgs e)//TreeView的ItemDrag事件 { IDataObject data = new DataObject(); data.SetData("Test", e.Item); //开始拖放操作 this.DoDragDrop(data, DragDropEffects.Copy); } private void OnPanel1DragEnter(object sender, DragEventArgs e)//Panel的DragEnter { if (e.Data.GetDataPresent("Test")) e.Effect = DragDropEffects.Copy; else e.Effect = DragDropEffects.None; } private void OnPanel1DragDrop(object sender, DragEventArgs e)//Panel的DragDrop事件 { object item = e.Data.GetData("Test"); TreeNode node = (TreeNode)item; Label label = new Label(); this.panel1.Controls.Add(label); label.AutoSize = true; label.Location = new System.Drawing.Point(e.X - this.treeView1.Width - this.panel1.Location.X, e.Y - this.panel1.Location.Y); label.Name = node.Name; label.Size = new System.Drawing.Size(, ); label.TabIndex = ; label.Text = node.Name; }
二、统一改变节点颜色
属性及事件绑定:
treeView.DrawMode = TreeViewDrawMode.OwnerDrawText; treeView.DrawNode += new DrawTreeNodeEventHandler(treeView_DrawNode);
功能函数:
private void treeView_DrawNode(object sender, DrawTreeNodeEventArgs e) { if (e.State == TreeNodeStates.Selected) //if ((e.State & TreeNodeStates.Selected) != 0) { e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(0, 122, 204)), e.Node.Bounds); Font nodeFont = e.Node.NodeFont; if (nodeFont == null) nodeFont = ((TreeView)sender).Font; e.Graphics.DrawString(e.Node.Text, nodeFont, Brushes.White, Rectangle.Inflate(e.Bounds, 2, 0)); } else { e.DrawDefault = true; } }
如果需要改变指定节点的颜色:
treeView.Nodes[i].Nodes[j].ForeColor = Color.Red;
/*******相与枕藉乎舟中,不知东方之既白*******/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!