在工作表左侧中添加TreeView控件
2024-09-28 02:54:57
开发环境基于VSTO:visual studio 2010,VB .Net,excel 2007,文档级别的定制程序。
需求是在sheet的左侧停靠System.Windows.Forms.TreeView控件,实现类似资源浏览器的效果,另外,tree节点使用自定义的图标,支持复选框。
首先准备好树节点的图标,使用visual studio 2010自带的图标可以省去很多麻烦(在安装目录\Common7\VS2010ImageLibrary)。我挑选了4个16x16大小的图标拷贝到vsto工程下的Resources目录下。通过Project->xxx Properties->Resources->AddResource->Add Existing File添加图标到工程中,代码中就可以用My.Resources.aaa的方式引用了(aaa为图标名称)。
接下来,在sheet初始化函数中完成图标与TreeView控件的初始化代码,如果TreeView控件的内容需要随sheet数据变化而刷新,还需要在sheet_change函数中添加代码。
Public Class Sheet1
Public WithEvents m_tree As New TreeView
Public m_imageList As New ImageList
Private Sub Sheet1_Startup() Handles Me.Startup
m_imageList.ColorDepth = ColorDepth.Depth32Bit
'第一个参数为ImageKey,类似Image名称的作用
m_imageList.Images.Add("cfg", My.Resources.book_notebook)
m_imageList.Images.Add("algo", My.Resources._075b_UpFolder_16x16_72)
m_imageList.Images.Add("scen", My.Resources.PlayHS)
m_imageList.Images.Add("warning", My.Resources._109_AllAnnotations_Warning_16x16_72)
Globals.ThisWorkbook.ActionsPane.Controls.Add(m_tree)
Application.CommandBars("Task Pane").Position = Microsoft.Office.Core.MsoBarPosition.msoBarLeft
m_tree.ImageList = m_imageList
m_tree.CheckBoxes = True
'tree的dock自动调整大小,需要在add到pane后再设置,否则不会生效
m_tree.Dock = DockStyle.Fill
With m_tree
.BeginUpdate()
.Nodes.Clear()
.Nodes.Add(New TreeNode(Me.Name))
.Nodes().ImageKey = "cfg"
.Nodes().SelectedImageKey = "cfg"
Dim idx As Integer = .Nodes.Add(New TreeNode("Node1"))
.Nodes(idx).ImageKey = "algo"
.Nodes(idx).SelectedImageKey = "algo"
Dim idx2 As Integer = .Nodes(idx).Nodes.Add(New TreeNode("case1_5M"))
.Nodes(idx).Nodes(idx2).ImageKey = "scen"
.Nodes(idx).Nodes(idx2).SelectedImageKey = "scen"
.EndUpdate()
End With
End Sub
Private Sub Sheet1_Change(Target As Microsoft.Office.Interop.Excel.Range) Handles Me.Change
'do Tree Refresh
End Sub
End Class
效果图:
最新文章
- tomcat触发ServletContext初始化监听事件的源码(原创)
- backbone模型层浅析
- 【mysql】关于innodb中MVCC的一些理解
- [Android Memory] Android Lint简介(转载)
- WebService的原理和过程
- Telerik RadGrid Demo
- c# 格式化百分比
- 使用zTree控件制作的表格形式的树形+数据菜单
- 解决Qt程序发布时中文乱码问题(通过QApplication.addLibraryPath加载QTextCodec插件)
- 红帽系列linux自行配置本地yum源
- poj 2762 强连通缩点+拓扑排序
- 恢复数据库的redo日志文件(由于异常关机引起)
- LOJ-10096(强连通+bfs)
- POJ-1456 Supermarket 销售商品【贪心】+【并查集】
- 中文乱码与字体库windows
- JavaScripts 的bom对象
- 记录关于vs2008 和vs2015 的报错问题
- 玩转X-CTR100 | STM32F4 l X-Assistant串口助手控制功能
- Codeforces Round #549 (Div. 1) 题解
- 做报表需要知道的基本的SQL语句
热门文章
- java 数据库索引的注意事项
- MVC,MVP 和 MVVM 的图示,区别
- 【ccf 2017/12/4】行车路线(dijkstra变形)
- 条款21:必须返回对象的时候,不要妄想使其返回reference
- Could not publish to the server.Please assign JRE to the server
- 再读《Java编程思想 》
- Java8新特性Optional、接口中的默认方法与静态方法
- Ubuntu 16.04 安装配置支持http2的nginx
- 2018下C程序设计(上)第0次作业
- js 获取 本周、上周、本月、上月、本季度、上季度的开始结束日期