当前位置: 首页 > news >正文

VSTO(C#)Excel开发7:自定义任务窗格

初级代码游戏的专栏介绍与文章目录-CSDN博客

我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。

这些代码大部分以Linux为目标但部分代码是纯C++的,可以在任何平台上使用。

源码指引:github源码指引_初级代码游戏的博客-CSDN博客


        前一篇VSTO(C#)Excel开发6:与窗体交互-CSDN博客

        前一篇用上了普通的C#窗体,能和Excel交互,唯一的缺憾是窗体是在Excel之外的,在任务栏上是独立的。虽然关闭Excel会同时关闭这个窗体,终究是见外了。

        那么怎做个不见外的窗体出来呢?这就要用到“任务窗格”。

目录

一、任务窗格是什么

二、创建窗体控件

三、创建任务窗格

 四、运行效果

五、与功能区联动

六、对象模型知识点

6.1 ThisAddIn.CustomTaskPanes 

6.2 CustomTaskPane


一、任务窗格是什么

        任务窗格是一个窗体控件,不需要使用模式对话框或无模式对话框,嵌入在Excel里面运行,与Excel浑然一体。

二、创建窗体控件

        窗体控件就是普通的窗体控件,项目上右键-添加-新建项:

        在窗体设计器放一个按扭过来:

        双击一下按钮,自动生成处理代码,在代码里添点东西:

		private void button1_Click(object sender, EventArgs e)
		{
            MessageBox.Show(Globals.ThisAddIn.Application.Version);
		}

        显示了一下版本,我们已经知道这个版本是Excel的版本,也知道从这里入手可以访问整个Excel对象模型,所以只要这个功能正常,剩下的就是业务问题了。

三、创建任务窗格

        在项目的入口ThisAddIn.cs里面添加创建任务窗格的代码:

        从这个图很容易看出来哪些是修改的。

        类里面添加一个窗体控件对象和任务窗格对象,在Startup里创建窗体控件并添加到Excel里面去并显示出来。

        这几句代码完全是套话,没什么好讲的。改过的代码:

。。。。。。
using Microsoft.Office.Tools;//CustomTaskPane

namespace ExcelAddIn1
{
    public partial class ThisAddIn
    {
        UserControl1 userControl1;
		CustomTaskPane myPane;

		private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
			userControl1 = new UserControl1();
			myPane = this.CustomTaskPanes.Add(userControl1, "userControl1");
			myPane.Visible = true;
		}
。。。。。。

 四、运行效果

        编译运行应该没什么问题,自动打开excel,选空白工作簿:

        看到我们的任务窗格已经出现了。点一下按钮button:

         效果符合预期。

五、与功能区联动

        现在任务窗格已经可以工作了,但是如果点击任务窗格右上角的叉,任务窗格就会被关闭,没有办法再次打开。所以我们要把显示任务窗格的代码放在功能区。

        创建一个功能区,添加一个按钮,我们已经很熟练了:

        先去把ThisAddIn类的myPane改成public(之前默认是private):

        双击功能区的按钮“打开任务窗格”自动生成代码,添加下面一行:

         点击这个按钮就把任务窗格显示出来。

        编译运行应该没什么问题:

        关掉任务窗格再点按钮任务窗格就会再次出现。

        因为本次练习我用的是新建的项目,所以加载项里面还有之前练习的编写的加载项。可以很容易地把之前在窗体里实现的功能迁移到窗体控件里面。

六、对象模型知识点

6.1 ThisAddIn.CustomTaskPanes 

         所有自定义任务窗格的集合,自定义任务窗格的类型是CustomTaskPane。

6.2 CustomTaskPane

        自定义任务窗格接口,主要的操作是控制大小和位置,一般我们用鼠标操作,意思不大。


下一篇VSTO(C#)Excel开发8:打包发布安装卸载-CSDN博客


(这里是文档结束)

相关文章:

  • 【原创】在高性能服务器上,使用受限用户运行Nginx,充当反向代理服务器[未完待续]
  • 《又是二叉树?递归与回溯的经典应用》
  • 嵌入式人工智能应用- 第七章 人脸识别
  • 什么是OF
  • java学习总结(四):MyBatis
  • 低成本抗衡DeepSeek-R1!QwQ-32B本地部署教程:消费级硬件可部署
  • 分布式事务中TCC、SAGA 或可靠消息事务应该如何理解?
  • WPS的Excel文档如何利用VB脚本批量替换超链接的内容
  • Linux 》》Ubuntu 18 LTS 之后的版本 修改IP地址 主机名
  • TypeScript 中 interface 与 type的使用注意事项 及区别详细介绍
  • TypeScript深度解析:从类型系统到工程化实践
  • MCP服务协议详细介绍
  • 【Windows】Wan 2.1 视频生成模型本地部署
  • xxl-job部署在docker-destop,实现定时发送预警信息给指定邮箱
  • 年龄与疾病(信息学奥赛一本通-1106)
  • Qt C++ 常用压缩库推荐 快速压缩 解压缩数据
  • Java是怎么解决并发问题的?
  • 高效图像处理工具:从需求分析到落地实现
  • 【vue + JS】OCR图片识别、文字识别
  • react对比vue的核心属性
  • 花290多万维修保质期仅一年多?媒体四问凤阳鼓楼“瓦片脱落”
  • 香港新股市场繁荣:恒瑞医药等4公司同时招股,宁德时代今日港交所上市
  • 大巴车高速上撞山致2死2伤,广东肇庆警方通报
  • 高温最强时段来了!北方局地高温有明显极端性
  • 国际观察丨美中东政策生变,以色列面临艰难选择
  • 陕西:未来一周高温持续,继续发布冬小麦干热风风险预警