【WinForm UI控件系列】ComboTreeView下拉树选择控件
ComboTreeView 是一个组合控件将文本框和树形控件结合支持单选和多选模式的节点选择功能特性单选模式点击节点直接选中并关闭下拉面板多选模式通过复选框选择多个节点支持全选/取消全选级联选择勾选父节点时自动级联选中所有子节点树形结构支持多层级节点展示节点连线可配置是否显示节点连线和展开/折叠按钮自定义下拉面板尺寸可自由设置下拉面板的高度双击选中多选模式下双击节点文本可快速切换选中状态圆角边框支持下拉面板和控件的圆角样式自定义边框支持自定义边框颜色和宽度一、效果图二、文档属性说明属性名类型默认值说明SelectionMultiModeboolfalse是否为多选模式NodesTreeNodeCollection空列表节点集合SelectedNodeTreeNodenull当前选中的节点SelectedNodesListTreeNode空列表已选中的节点集合只读DropDownHeightint200下拉面板高度ShowLinesbooltrue是否显示节点连线Textstring空选中的文本只读BorderColorColorColor.FromArgb(26, 188, 156)边框颜色BorderWidthint1边框宽度CornerRadiusint4圆角半径ReadOnlybooltrue文本框是否只读FollowGlobalThemebooltrue是否跟随全局主题切换事件事件名说明参数SelectionChanged选择发生变化时触发ComboTreeViewSelectionChangedEventArgs使用示例基本用法// 创建控件varcomboTreeViewnewComboTreeView();comboTreeView.SelectionMultiModetrue;comboTreeView.DropDownHeight250;comboTreeView.ShowLinestrue;// 添加节点varroot1newTreeNode(节点0);root1.Nodes.Add(newTreeNode(节点1));root1.Nodes.Add(newTreeNode(节点2));root1.Nodes.Add(newTreeNode(节点3));varroot2newTreeNode(节点4);root2.Nodes.Add(newTreeNode(节点5));varchildnewTreeNode(节点6);child.Nodes.Add(newTreeNode(节点7));root2.Nodes.Add(child);comboTreeView.Nodes.Add(root1);comboTreeView.Nodes.Add(root2);// 添加到窗体this.Controls.Add(comboTreeView);comboTreeView.LocationnewPoint(20,20);comboTreeView.SizenewSize(200,32);// 绑定事件comboTreeView.SelectionChanged(sender,e){varselectede.SelectedNodes;if(selected.Count0){MessageBoxEx.ShowInfo(this,$选中了{selected.Count}个节点);}// 获取选中的文本控件自动拼接stringselectedTextcomboTreeView.Text;MessageBoxEx.ShowInfo(this,selectedText);};单选模式// 设置为单选模式默认comboTreeView.SelectionMultiModefalse;// 获取选中节点varnodecomboTreeView.SelectedNode;if(node!null){Console.WriteLine($选中:{node.Text});}多选模式// 设置为多选模式comboTreeView.SelectionMultiModetrue;// 全选comboTreeView.SelectAll(true);// 取消全选comboTreeView.SelectAll(false);// 获取所有选中节点foreach(varnodeincomboTreeView.SelectedNodes){Console.WriteLine($选中:{node.Text});}// 双击节点文本快速切换选中状态多选模式下自定义外观// 设置边框颜色和宽度comboTreeView.BorderColorColor.FromArgb(24,144,255);comboTreeView.BorderWidth2;// 设置圆角半径comboTreeView.CornerRadius6;代码方式选择节点// 单选模式下设置选中节点comboTreeView.SelectedNodecomboTreeView.Nodes[0];// 多选模式下设置节点勾选状态varnodecomboTreeView.Nodes[0].Nodes[0];node.IsCheckedtrue;TreeNode 类属性属性名类型说明Idstring节点唯一标识默认自动生成Textstring节点显示文本NodesTreeNodeCollection子节点集合Tagobject自定义数据Expandedbool是否展开Selectedbool是否选中行高亮IsCheckedbool是否勾选复选框Checkablebool是否可勾选Enabledbool是否可用Levelint节点层级只读构造函数// 空构造varnodenewTreeNode();// 指定文本varnodenewTreeNode(节点名称);// 指定ID和文本varnodenewTreeNode(node001,节点名称);方法// 展开/收起节点node.Expand();node.Collapse();node.Toggle();// 展开/收起所有子节点node.ExpandAll();node.CollapseAll();// 获取所有子节点递归varallChildrennode.GetAllChildren();注意事项在多选模式下需要点击确定按钮确认选择在多选模式下点击取消按钮会取消本次选择操作级联选择只在多选模式下生效ShowLines 属性控制是否显示节点连线和展开/折叠按钮建议根据节点数量适当调整 DropDownHeight多选模式下双击节点文本可快速切换选中状态下拉面板边框样式与主控件一致圆角、颜色、宽度确定和取消按钮支持悬停效果主题适配支持自动跟随全局主题切换亮色/暗色深色模式下文本框、下拉面板、树控件背景色自动调整为深色可通过FollowGlobalTheme属性禁用自动主题切换三、后记更多精彩补充完善中敬请关注如有需求有好的建议请vx留言(xue5zhijing)