初级代码游戏的专栏介绍与文章目录-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;//CustomTaskPanenamespace 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
自定义任务窗格接口,主要的操作是控制大小和位置,一般我们用鼠标操作,意思不大。
(这里是文档结束)