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

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

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

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

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


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

        前一篇用上了普通的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:打包发布安装卸载-优快云博客


(这里是文档结束)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

初级代码游戏

知识究竟是有价还是无价

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值