news 2026/5/16 19:44:08

【WinForm UI控件系列】ComboTreeView下拉树选择控件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【WinForm UI控件系列】ComboTreeView下拉树选择控件

ComboTreeView 是一个组合控件,将文本框和树形控件结合,支持单选和多选模式的节点选择

功能特性

  • 单选模式:点击节点直接选中并关闭下拉面板
  • 多选模式:通过复选框选择多个节点,支持全选/取消全选
  • 级联选择:勾选父节点时自动级联选中所有子节点
  • 树形结构:支持多层级节点展示
  • 节点连线:可配置是否显示节点连线和展开/折叠按钮
  • 自定义下拉面板尺寸:可自由设置下拉面板的高度
  • 双击选中:多选模式下双击节点文本可快速切换选中状态
  • 圆角边框:支持下拉面板和控件的圆角样式
  • 自定义边框:支持自定义边框颜色和宽度

一、效果图




二、文档

属性说明

属性名类型默认值说明
SelectionMultiModeboolfalse是否为多选模式
NodesTreeNodeCollection空列表节点集合
SelectedNodeTreeNodenull当前选中的节点
SelectedNodesList<TreeNode>空列表已选中的节点集合(只读)
DropDownHeightint200下拉面板高度
ShowLinesbooltrue是否显示节点连线
Textstring选中的文本(只读)
BorderColorColorColor.FromArgb(26, 188, 156)边框颜色
BorderWidthint1边框宽度
CornerRadiusint4圆角半径
ReadOnlybooltrue文本框是否只读
FollowGlobalThemebooltrue是否跟随全局主题切换

事件

事件名说明参数
SelectionChanged选择发生变化时触发ComboTreeViewSelectionChangedEventArgs

使用示例

基本用法

// 创建控件varcomboTreeView=newComboTreeView();comboTreeView.SelectionMultiMode=true;comboTreeView.DropDownHeight=250;comboTreeView.ShowLines=true;// 添加节点varroot1=newTreeNode("节点0");root1.Nodes.Add(newTreeNode("节点1"));root1.Nodes.Add(newTreeNode("节点2"));root1.Nodes.Add(newTreeNode("节点3"));varroot2=newTreeNode("节点4");root2.Nodes.Add(newTreeNode("节点5"));varchild=newTreeNode("节点6");child.Nodes.Add(newTreeNode("节点7"));root2.Nodes.Add(child);comboTreeView.Nodes.Add(root1);comboTreeView.Nodes.Add(root2);// 添加到窗体this.Controls.Add(comboTreeView);comboTreeView.Location=newPoint(20,20);comboTreeView.Size=newSize(200,32);// 绑定事件comboTreeView.SelectionChanged+=(sender,e)=>{varselected=e.SelectedNodes;if(selected.Count>0){MessageBoxEx.ShowInfo(this,$"选中了{selected.Count}个节点");}// 获取选中的文本(控件自动拼接)stringselectedText=comboTreeView.Text;MessageBoxEx.ShowInfo(this,selectedText);};

单选模式

// 设置为单选模式(默认)comboTreeView.SelectionMultiMode=false;// 获取选中节点varnode=comboTreeView.SelectedNode;if(node!=null){Console.WriteLine($"选中:{node.Text}");}

多选模式

// 设置为多选模式comboTreeView.SelectionMultiMode=true;// 全选comboTreeView.SelectAll(true);// 取消全选comboTreeView.SelectAll(false);// 获取所有选中节点foreach(varnodeincomboTreeView.SelectedNodes){Console.WriteLine($"选中:{node.Text}");}// 双击节点文本快速切换选中状态(多选模式下)

自定义外观

// 设置边框颜色和宽度comboTreeView.BorderColor=Color.FromArgb(24,144,255);comboTreeView.BorderWidth=2;// 设置圆角半径comboTreeView.CornerRadius=6;

代码方式选择节点

// 单选模式下设置选中节点comboTreeView.SelectedNode=comboTreeView.Nodes[0];// 多选模式下设置节点勾选状态varnode=comboTreeView.Nodes[0].Nodes[0];node.IsChecked=true;

TreeNode 类

属性

属性名类型说明
Idstring节点唯一标识(默认自动生成)
Textstring节点显示文本
NodesTreeNodeCollection子节点集合
Tagobject自定义数据
Expandedbool是否展开
Selectedbool是否选中(行高亮)
IsCheckedbool是否勾选(复选框)
Checkablebool是否可勾选
Enabledbool是否可用
Levelint节点层级(只读)

构造函数

// 空构造varnode=newTreeNode();// 指定文本varnode=newTreeNode("节点名称");// 指定ID和文本varnode=newTreeNode("node001","节点名称");

方法

// 展开/收起节点node.Expand();node.Collapse();node.Toggle();// 展开/收起所有子节点node.ExpandAll();node.CollapseAll();// 获取所有子节点(递归)varallChildren=node.GetAllChildren();

注意事项

  1. 在多选模式下,需要点击"确定"按钮确认选择
  2. 在多选模式下,点击"取消"按钮会取消本次选择操作
  3. 级联选择只在多选模式下生效
  4. ShowLines 属性控制是否显示节点连线和展开/折叠按钮
  5. 建议根据节点数量适当调整 DropDownHeight
  6. 多选模式下双击节点文本可快速切换选中状态
  7. 下拉面板边框样式与主控件一致(圆角、颜色、宽度)
  8. 确定和取消按钮支持悬停效果
  9. 主题适配
    • 支持自动跟随全局主题切换(亮色/暗色)
    • 深色模式下文本框、下拉面板、树控件背景色自动调整为深色
    • 可通过FollowGlobalTheme属性禁用自动主题切换

三、后记

更多精彩补充完善中,敬请关注,如有需求,有好的建议,请vx留言(xue5zhijing)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 19:37:34

从零构建LAMMPS in文件:分子动力学模拟的完整流程解析

1. 初识LAMMPS in文件&#xff1a;你的第一份分子动力学剧本 刚接触LAMMPS时&#xff0c;我盯着那个黑漆漆的命令行窗口发呆了半小时——直到明白in文件就是分子动力学模拟的"剧本"。就像导演需要分镜脚本一样&#xff0c;in文件用纯文本告诉LAMMPS&#xff1a;谁&a…

作者头像 李华
网站建设 2026/5/16 19:35:29

观察taotoken用量看板如何清晰展示各项目api调用明细

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 观察taotoken用量看板如何清晰展示各项目API调用明细 对于项目管理者而言&#xff0c;清晰掌握团队在大模型API上的资源消耗情况至…

作者头像 李华
网站建设 2026/5/16 19:31:39

ava(JDK)主流版本从 8 → 11 → 17 → 21 区别

一、先把概念说清楚Java 版本 JDK 版本&#xff08;日常混用&#xff09;LTS 长期支持版&#xff08;3–5 年维护&#xff09;&#xff0c;企业只认 8 / 11 / 17 / 21非 LTS&#xff08;9、10、12–16、18–20&#xff09; 过渡版&#xff0c;生产基本不用二、四大 LTS 核心区…

作者头像 李华
网站建设 2026/5/16 19:31:19

3分钟解锁CAJ文件:如何将知网专属格式转换为可搜索PDF

3分钟解锁CAJ文件&#xff1a;如何将知网专属格式转换为可搜索PDF 【免费下载链接】caj2pdf Convert CAJ (China Academic Journals) files to PDF. 转换中国知网 CAJ 格式文献为 PDF。佛系转换&#xff0c;成功与否&#xff0c;皆是玄学。 项目地址: https://gitcode.com/gh…

作者头像 李华
网站建设 2026/5/16 19:29:14

【实战解析】ST7567G与UC1701E双模LCD屏的SPI驱动与自动识别

1. 双模LCD屏的驱动挑战与解决方案 遇到需要同时支持ST7567G和UC1701E两款LCD屏的项目时&#xff0c;很多开发者都会头疼。这两块屏虽然都是128x64点阵&#xff0c;但指令集差异就像两个说着不同方言的人。我去年做智能家居中控项目时就踩过这个坑&#xff0c;当时设备需要兼容…

作者头像 李华