注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Kandy

长风破浪会有时,直挂云帆济沧海!

 
 
 

日志

 
 

基本的VSTO项目结构  

2009-07-12 11:45:56|  分类: VSTO |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

第一次创建VSTO项目时,系统创建的文件随项目类型的不同而不同,但有一些共同的特性。本节介绍VSTO项目的组成。

1. 文档级定制的项目结构

创建文档级定制的项目时,在Solution Explorer中有一项表示文档类型。它可以是:

●  表示Word文档的.docx文件

●  表示Word模板的.dotx文件

●  表示Excel工作簿的.xlsx文件

●  表示Excel模板的.xltx文件

每个文档类型都有一个设计器视图和一个代码文件,如果在Solution Explorer中展开该项,就会看到它们。Excel模板还包含子项,它们表示整个工作簿和工作簿中的每个工作表。这个结构可以在每个工作表或工作簿的基础上提供定制功能。

如果查看上述项目类型的隐藏文件,会看到几个设计器文件,查看这些设计器文件,还会看到模板生成的代码。每个Office文档项都在VSTO命名空间中有关联的类,代码文件中的类派生于这些类。这些类定义为部分类,这样定制代码会与可视化设计器生成的代码分隔开,类似于Windows窗体应用程序的结构。

例如,Word文档模板提供了一个派生自主机项Microsoft.Office.Tools.Word.Document的类,其代码包含在ThisDocument.cs中,如下所示:

using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Xml.Linq;
using Microsoft.VisualStudio.Tools.Applications.Runtime;
using Office = Microsoft.Office.Core;
using Word = Microsoft.Office.Interop.Word;
namespace WordDocument1
{
public partial class ThisDocument
{
private void ThisDocument_Startup(object sender, System.EventArgs e)
{
}
private void ThisDocument_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO Designer generated code
/// < summary >
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// < /summary >
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisDocument_Startup);
this.Shutdown += new System.EventHandler(ThisDocument_Shutdown);
}
#endregion
}
}

这些模板生成的代码包含两个主要命名空间的别名,在为Word创建文档级的定制时,需要使用这两个命名空间。Microsoft.Office.Core用于主要的VSTO Office类,Microsoft.Office.Interop.Word用于和Word相关的类。注意如果要使用Word主机控件,还要为Microsoft.Office.Tools.Word命名空间添加一个using语句。模板生成的代码还定义了两个事件处理程序ThisDocument_Startup()和ThisDocument_Shutdown(),用于在加载和卸载文档时执行代码。

每个文档级定制项目类型的代码文件都有类似的结构,还定义了命名空间别名以及VSTO类中各个Startup和Shutdown事件的处理程序。以此为起点,可以添加对话框、动作面板、ribbon控件、事件处理程序和定制代码,来定义定制操作。

在文档级的定制中,还可以通过文档设计器定制文档。根据所创建的解决方案类型,这可能需要给模板添加样板文件,给文档添加交互式内容或其他内容。设计器是Office应用程序的高效主机版本,使用它们可以像在应用程序中那样输入内容。还可以在文档中添加控件,例如主机控件和Windows窗体控件,以及这些控件的代码。

2. 应用程序级插件的项目结构

创建应用程序级插件时,在Solution Explorer中没有文档,而有一项表示创建插件所使用的应用程序。如果展开该项,会看到一个文件ThisAddIn.cs。这个文件包含类ThisAddIn的部分定义,该类是插件的入口点。这个类派生于Microsoft.Office.Tools.AddIn,它提供了编写插件的功能,实现了Microsoft.VisualStudio.Tools.Office.IOfficeEntryPoint接口,这是一个基础体系接口。

例如,Word插件模板生成的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;
using Word = Microsoft.Office.Interop.Word;
using Office = Microsoft.Office.Core;
namespace WordAddIn1
{
public partial class ThisAddIn
{
private void ThisAddIn_Startup(object sender, System.EventArgs e)
{
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e)
{
}
#region VSTO generated code
/// < summary >
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// < /summary >
private void InternalStartup()
{
this.Startup += new System.EventHandler(ThisAddIn_Startup);
this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown);
}
#endregion
}
}

可以看出,这个结构非常类似于文档级定制使用的结构,它包含Microsoft.Office.Core和Microsoft.Office.Interop.Word命名空间的别名,提供了Startup和Shutdown事件的处理程序(ThisAddIn_Startup()和ThisAddIn_Shutdown())。这些事件与文档级定制略有不同,因为它们在加载或卸载插件时触发,而不是在打开或关闭文档时触发。

定制应用程序级插件与文档级定制相同:添加ribbon控件、任务面板和其他代码。

  评论这张
 
阅读(405)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018