恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

TreeView字体颜色设置

  • 首页
  • 资讯中心
  • /
  • TreeView字体颜色设置

相关资讯

汽车传感器与执行器实战手册:从原理到故障诊断 2026/10/11 2:06:48
AI编程工具MCP配置统一管理:单一配置源与自动同步实战 2026/10/11 2:06:48
水下目标语义分割数据集工程实践:掩码格式、预处理与避坑指南 2026/10/11 2:01:48

最新资讯

C语言/数据结构欧几里得算法题解:长方形切割最大正方形——贪心划分计数
Spring Boot对接MQTT完整实践:从协议原理到消息可靠性设计
MediaPlayer.getPlaybackParams深度解析:倍速与音调控制实战
谁是省时神器?8款AI论文平台梯队榜,毕业论文轻松搞定!
Redis Streams——有确认、能回溯的消息队列
从 0 到 1 挖 SRC 漏洞:信息收集全流程思路

今日推荐

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本周热门

UE动画修改实战:从资产编辑到重定向与蒙太奇驱动
统计随机数生成器攻击下的KLJN安全密钥交换协议Matlab仿真
政务API安全治理:资产测绘、低代码编排与行标对标实践

本月精选

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证
2026 大模型集体涨价:用 Python 做企业 Token 成本测算与选型避坑(附配置)

TreeView字体颜色设置

发布时间:2026/10/11 2:06:48
TreeView字体颜色设置 修改要点WinForms TreeView 想要不同节点不同字体大小、文字颜色必须开启OwnerDraw然后处理DrawNode事件。只需要在PipeCheckUserControl构造函数里加2行新增_treeQC_DrawNode方法不用改 LoadCheckTree 其它逻辑。1. 在构造函数中给_treeQC增加设置和事件绑定找到你代码里初始化_treeQC的地方增加这两行_treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;// 自绘文字复选框、加减号由系统画最简单_treeQC.DrawNode_treeQC_DrawNode;放在_treeQC.AfterCheck TreeQC_AfterCheck;后面就行。2. 在 PipeCheckUserControl 类里面新增这个DrawNode方法privatevoid_treeQC_DrawNode(objectsender,DrawTreeNodeEventArgse){FontnodeFont;ColorforeColor;if(e.Node.TagisstringtagtagGROUP){// 分组节点字号更大 蓝色 nodeFontnewFont(e.Node.TreeView.Font.FontFamily,10,FontStyle.Bold);foreColorColor.DarkBlue;}else{// 子检查项默认字体、黑色 nodeFonte.Node.TreeView.Font;foreColorColor.Black;}// 绘制文字e.Graphics.DrawString(e.Node.Text,nodeFont,Brushes.GetBrush(foreColor),e.Bounds.X,e.Bounds.Y);// 释放自定义Font避免GDI资源泄漏if(nodeFont!e.Node.TreeView.Font)nodeFont.Dispose();}完整改动位置对照你原有代码//TreeView_treeQCnewTreeView();_treeQC.DockDockStyle.Fill;_treeQC.CheckBoxestrue;_treeQC.ShowLinestrue;_treeQC.ShowPlusMinustrue;// 新增下面两行 _treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;_treeQC.DrawNode_treeQC_DrawNode;////右键菜单_treeContextMenunewContextMenuStrip();…… _treeQC.NodeMouseClickTreeQC_NodeMouseClick;_treeQC.AfterCheckTreeQC_AfterCheck;可选微调改分组字号10→11/12改分组颜色Color.DarkBlue→Color.DarkGreen/Color.Maroon去掉加粗删掉FontStyle.Bold⚠️ 注意用OwnerDrawText模式复选框、加减展开符号、连线仍然是系统原生绘制不会影响勾选功能和你现有的AfterCheck勾选联动完全兼容最简单。坑提醒不要用TreeViewDrawMode.OwnerDrawAll那个需要你自己画复选框麻烦。OwnerDrawText刚好满足你的需求。你直接把上面代码贴进去就能看到分组字体变大变色。要不要我把修改后的整段PipeCheckUserControl构造函数一次性给你替换问题Brushes.GetBrush()不存在.NET WinForms 没有这个方法。替换成SolidBrush记得用完释放画笔防止GDI泄漏。修改 DrawNode 代码privatevoid_treeQC_DrawNode(objectsender,DrawTreeNodeEventArgse){FontnodeFont;ColorforeColor;if(e.Node.TagisstringtagtagGROUP){//分组节点更大字号、加粗、深蓝色nodeFontnewFont(e.Node.TreeView.Font.FontFamily,10,FontStyle.Bold);foreColorColor.DarkBlue;}else{//子节点沿用原有字体nodeFonte.Node.TreeView.Font;foreColorColor.Black;}using(SolidBrushbrushnewSolidBrush(foreColor)){e.Graphics.DrawString(e.Node.Text,nodeFont,brush,e.Bounds.X,e.Bounds.Y);}// 释放新建的字体if(nodeFont!e.Node.TreeView.Font){nodeFont.Dispose();}}命名空间确认需要usingSystem.Drawing;可选优化小细节DrawString 可以微调垂直位置文字对齐更舒服e.Graphics.DrawString(e.Node.Text,nodeFont,brush,e.Bounds.X,e.Bounds.Y2);完整插入位置还是在PipeCheckUserControl类里面直接粘贴这个方法即可构造函数那两行不变_treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;_treeQC.DrawNode_treeQC_DrawNode;测试分组节点字体变大加粗深蓝色子节点保持原样复选框、加减号、勾选逻辑完全不受影响。如果你想我可以顺便把文字的抗锯齿加上文字边缘更平滑。修改要点WinForms TreeView 想要不同节点不同字体大小、文字颜色必须开启OwnerDraw然后处理DrawNode事件。只需要在PipeCheckUserControl构造函数里加2行新增_treeQC_DrawNode方法不用改 LoadCheckTree 其它逻辑。1. 在构造函数中给_treeQC增加设置和事件绑定找到你代码里初始化_treeQC的地方增加这两行_treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;// 自绘文字复选框、加减号由系统画最简单_treeQC.DrawNode_treeQC_DrawNode;放在_treeQC.AfterCheck TreeQC_AfterCheck;后面就行。2. 在 PipeCheckUserControl 类里面新增这个DrawNode方法privatevoid_treeQC_DrawNode(objectsender,DrawTreeNodeEventArgse){FontnodeFont;ColorforeColor;if(e.Node.TagisstringtagtagGROUP){// 分组节点字号更大 蓝色 nodeFontnewFont(e.Node.TreeView.Font.FontFamily,10,FontStyle.Bold);foreColorColor.DarkBlue;}else{// 子检查项默认字体、黑色 nodeFonte.Node.TreeView.Font;foreColorColor.Black;}// 绘制文字e.Graphics.DrawString(e.Node.Text,nodeFont,Brushes.GetBrush(foreColor),e.Bounds.X,e.Bounds.Y);// 释放自定义Font避免GDI资源泄漏if(nodeFont!e.Node.TreeView.Font)nodeFont.Dispose();}完整改动位置对照你原有代码//TreeView_treeQCnewTreeView();_treeQC.DockDockStyle.Fill;_treeQC.CheckBoxestrue;_treeQC.ShowLinestrue;_treeQC.ShowPlusMinustrue;// 新增下面两行 _treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;_treeQC.DrawNode_treeQC_DrawNode;////右键菜单_treeContextMenunewContextMenuStrip();…… _treeQC.NodeMouseClickTreeQC_NodeMouseClick;_treeQC.AfterCheckTreeQC_AfterCheck;可选微调改分组字号10→11/12改分组颜色Color.DarkBlue→Color.DarkGreen/Color.Maroon去掉加粗删掉FontStyle.Bold⚠️ 注意用OwnerDrawText模式复选框、加减展开符号、连线仍然是系统原生绘制不会影响勾选功能和你现有的AfterCheck勾选联动完全兼容最简单。坑提醒不要用TreeViewDrawMode.OwnerDrawAll那个需要你自己画复选框麻烦。OwnerDrawText刚好满足你的需求。你直接把上面代码贴进去就能看到分组字体变大变色。要不要我把修改后的整段PipeCheckUserControl构造函数一次性给你替换结论先说不行不能直接在 TreeNode 上设置字体。TreeNode本身没有Font属性WinForms 的 TreeView 是整棵树共用一套字体节点不能单独存字体对象。 所以只能走OwnerDrawText DrawNode自绘方案但可以去掉颜色只改分组字号代码更简单。你刚才想法groupNode.Font xxx会编译报错TreeNode 没有Font属性。简化版 DrawNode只改分组字体大小不修改颜色privatevoid_treeQC_DrawNode(objectsender,DrawTreeNodeEventArgse){FontnodeFont;if(e.Node.TagisstringtagtagGROUP){//分组节点字号放大加粗颜色和原来保持黑色不变nodeFontnewFont(e.Node.TreeView.Font.FontFamily,10,FontStyle.Bold);}else{//子节点直接使用TreeView默认字体nodeFonte.Node.TreeView.Font;}using(SolidBrushbrushnewSolidBrush(e.Node.ForeColor)){e.Graphics.DrawString(e.Node.Text,nodeFont,brush,e.Bounds.X,e.Bounds.Y2);}if(nodeFont!e.Node.TreeView.Font){nodeFont.Dispose();}}构造函数保留这两行必须加_treeQC.DrawModeTreeViewDrawMode.OwnerDrawText;_treeQC.DrawNode_treeQC_DrawNode;可选调整字号把10改成11/12按需调如果不想加粗删掉FontStyle.BoldnodeFontnewFont(e.Node.TreeView.Font.FontFamily,11);小坑提醒自绘只影响文字复选框、加减号、连线全部原生不变勾选逻辑完全不受影响一定要using画笔 Dispose自定义Font防止GDI资源泄漏LoadCheckTree 里面不需要任何改动保持你现在的代码原样。如果你不想用自绘不想引入DrawNode事件那就没办法实现“分组节点字号更大”原生TreeView不支持单节点独立字体。需要我把完整的 PipeCheckUserControl 里面对应区域给你合并好吗✅ 可以统一整棵TreeView字体放大所有节点一起变大分组和子节点一样大这个不需要自绘DrawNode最简单直接设置_treeQC.Font在创建TreeView的地方写一行即可。_treeQCnewTreeView();_treeQC.DockDockStyle.Fill;_treeQC.CheckBoxestrue;_treeQC.ShowLinestrue;_treeQC.ShowPlusMinustrue;// 新增这一行全局统一Tree字体 _treeQC.FontnewFont(_treeQC.Font.FontFamily,10);// 10 是字号改成11、12都可以想加粗就加 FontStyle.Bold// _treeQC.Font new Font(_treeQC.Font.FontFamily, 11, FontStyle.Bold);特点全部节点分组子项字体一起变大分组和子节点没有区分原生控件不需要DrawNode自绘代码最简单无GDI泄漏坑。两种方案对比全局Font上面这个优点一行代码不用自绘稳定不影响勾选、右键、展开折叠缺点分组和子节点字体大小完全一样不能区分DrawNode自绘刚才的方案优点分组大字体子节点保持小号视觉区分缺点需要开启OwnerDrawText增加DrawNode事件代码如果你选择【全局放大全部tree字体】直接删掉之前加的这两行不要再用自绘// 删掉不要自绘// _treeQC.DrawMode TreeViewDrawMode.OwnerDrawText;// _treeQC.DrawNode _treeQC_DrawNode;然后在_treeQC实例化后加上_treeQC.Font new Font(...)。注意LoadCheckTree 加载树的代码完全不用改动加载出来的所有节点自动使用TreeView设置的字体。你要哪一种A全部节点统一放大最简单无自绘B分组单独放大子节点保持原样需要保留DrawNode自绘

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号