我的VSTO之路(二):VSTO程序基本知识
2011-05-04 08:41
477 查看
开始之前,首先我介绍一下我的开发环境:VS2010+Office2010,是基于.Netframework4.0和VSTO4.0。以下的范例代码都基于这个,如果你使用的是VS2008,那么问题也不大,基本可以移植过去。需要注意的是.Netframework4.0中增加了dynamic类型和可选参数,而这两点新的特性在VSTO4.0中被广泛使用,新特性的详细内容我就不介绍了,(其实介绍的地方很多,Google一下就可以了
),移植的时候需要稍微调整一下代码。
要开发VSTO项目,环境搭建比较简单,微软这方面做得都做不错。只要安装了VS2010(需要勾选VSTO4.0)和Office2010即可。VS2008配合Office2007也可以轻松搭建开发环境。
创建项目选择创建新项目->C#->Office,然后选择Word2010Add-in,如下图:
可以看到图中除了Word2010Add-in,还有Word2010Document和Word2010Template这两种项目类型。它们的区别在于,Add-in属于Applicationlevel,即是一个插件,每次Word启动的时候都会加载这个插件。而Document和Template属于DocumentLevel,这种项目会生成一个Word文件(Document项目会生成.docx文件,而Template会生成.dotx),你写的代码只有在运行这个特定的Word文件的时候才会起作用。
往Ribbon上,添加一个按钮,并取名为Hello
双击Hello按钮,在OnClick中,添加如下代码:
[code]{
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
按F5运行当前程序,VS会帮你自动开始一个新的Word实例,然后在Word中选择Add-ins标签页,点击Hello按钮。如果你顺利看到HelloWord!对话框,就说明你的第一个VSTO程序,顺利完成了。
对于我们的一个VSTO程序,我们做一些小的优化。从前一张图我们可以看到,我们的Ribbon和其他插件的Ribbon都挤在了Add-ins,这个Tabs中。我们现在要把我们的Ribbon独立出来。在VS中,打开Ribbon的设计界面,并选择RibbonTab,如下图,把ControlIdType改为Custom,然后把ControlID改为MyFirstAddin,这样我们的Ribbon会独占一个RibbonTab。
*这里有个小Trick,如果你的客户希望你把自己建的Ribbon插入到Office自己的Ribbon里面去,我们也可以实现。把ControlIdType设定为Office,并把OfficeID设定为TabHome,如下图:
运行界面
其他的OfficeID可以到这里查看:Office2010IDs,Office2007IDs
TaskPane是一个很有用的控件,它可以驻留在Office程序的窗口上,让开发者更具自己的需求创建界面。首先我们先创建一个UserControl,之后这个UserControl将嵌入在TaskPane中。而我们所添加的代码,主要也加在这个UserControl中。
在UserControl上放一个Label,我们暂时不在这里写进一步的代码:
在ThisAddIn.cs文件中,进行如下修改,这样在这样Addin被加载时,就会显示TaskPane:
[code]{
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
运行结果:
将TaskPane与Ribbon关联
我们已经完成了一个TaskPane,接下去要用之前创建的Ribbon控制TaskPane的显示。先对之前的Ribbon做一些修改,增加两个按钮,同时我们对界面做一些美化,具体步骤我这里不详述了,界面如下图:
为"OpenTaskPane"和"CloseTaskPane"添加Onclick事件,代码如下:
运行你的程序,便可以看到结果了。
MyFirstAddin.zip。在之后的文章中,我会深入介绍Word、Excel和Outlook的具体开发实例以及开发的细节。详细请看,我之前写的序,/article/5517666.html。
本文欢迎转载,但请保留出处,大家如果有问题,可以联系我justin.tyrael@gmail.com
),移植的时候需要稍微调整一下代码。
创建VSTO项目
环境搭建要开发VSTO项目,环境搭建比较简单,微软这方面做得都做不错。只要安装了VS2010(需要勾选VSTO4.0)和Office2010即可。VS2008配合Office2007也可以轻松搭建开发环境。
创建项目选择创建新项目->C#->Office,然后选择Word2010Add-in,如下图:
可以看到图中除了Word2010Add-in,还有Word2010Document和Word2010Template这两种项目类型。它们的区别在于,Add-in属于Applicationlevel,即是一个插件,每次Word启动的时候都会加载这个插件。而Document和Template属于DocumentLevel,这种项目会生成一个Word文件(Document项目会生成.docx文件,而Template会生成.dotx),你写的代码只有在运行这个特定的Word文件的时候才会起作用。
添加自定义的Ribbon
右击项目->添加新的Item->Office->Ribbon(VisualDesigner),如下图:往Ribbon上,添加一个按钮,并取名为Hello
双击Hello按钮,在OnClick中,添加如下代码:
privatevoidbtHello_Click(objectsender,RibbonControlEventArgse)
[code]{
System.Windows.Forms.MessageBox.Show("HelloWorld!");
}
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
按F5运行当前程序,VS会帮你自动开始一个新的Word实例,然后在Word中选择Add-ins标签页,点击Hello按钮。如果你顺利看到HelloWord!对话框,就说明你的第一个VSTO程序,顺利完成了。
对于我们的一个VSTO程序,我们做一些小的优化。从前一张图我们可以看到,我们的Ribbon和其他插件的Ribbon都挤在了Add-ins,这个Tabs中。我们现在要把我们的Ribbon独立出来。在VS中,打开Ribbon的设计界面,并选择RibbonTab,如下图,把ControlIdType改为Custom,然后把ControlID改为MyFirstAddin,这样我们的Ribbon会独占一个RibbonTab。
*这里有个小Trick,如果你的客户希望你把自己建的Ribbon插入到Office自己的Ribbon里面去,我们也可以实现。把ControlIdType设定为Office,并把OfficeID设定为TabHome,如下图:
运行界面
其他的OfficeID可以到这里查看:
添加TaskPane
创建TaskPaneTaskPane是一个很有用的控件,它可以驻留在Office程序的窗口上,让开发者更具自己的需求创建界面。首先我们先创建一个UserControl,之后这个UserControl将嵌入在TaskPane中。而我们所添加的代码,主要也加在这个UserControl中。
在UserControl上放一个Label,我们暂时不在这里写进一步的代码:
在ThisAddIn.cs文件中,进行如下修改,这样在这样Addin被加载时,就会显示TaskPane:
publicpartialclassThisAddIn
[code]{
publicCustomTaskPane_MyCustomTaskPane=null;
privatevoidThisAddIn_Startup(objectsender,System.EventArgse)
{
UCForTaskPanetaskPane=newUCForTaskPane();
_MyCustomTaskPane=this.CustomTaskPanes.Add(taskPane,"MyTaskPane");
_MyCustomTaskPane.Width=200;
_MyCustomTaskPane.Visible=true;
}
privatevoidThisAddIn_Shutdown(objectsender,System.EventArgse)
{
}
#regionVSTOgeneratedcode
//内容被省略
#endregion
}
[/code]
.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}
运行结果:
将TaskPane与Ribbon关联
我们已经完成了一个TaskPane,接下去要用之前创建的Ribbon控制TaskPane的显示。先对之前的Ribbon做一些修改,增加两个按钮,同时我们对界面做一些美化,具体步骤我这里不详述了,界面如下图:
为"OpenTaskPane"和"CloseTaskPane"添加Onclick事件,代码如下:
privatevoidbtnOpen_Click(objectsender,RibbonControlEventArgse)
{
if(Globals.ThisAddIn._MyCustomTaskPane!=null)
{
Globals.ThisAddIn._MyCustomTaskPane.Visible=true;
}
}
privatevoidbtnClose_Click(objectsender,RibbonControlEventArgse)
{
if(Globals.ThisAddIn._MyCustomTaskPane!=null)
{
Globals.ThisAddIn._MyCustomTaskPane.Visible=false;
}
}
本文总结
到这里,我介绍了VSTO的开发方法,以及Ribbon和TaskPane的基本知识,本文中的范例程序可以在这里下载:本文欢迎转载,但请保留出处,大家如果有问题,可以联系我
相关文章推荐
- 我的VSTO之路(二):VSTO程序基本知识
- VSTO程序基本知识
- VSTO程序基本知识(二)
- VSTO程序基本知识(三)
- VSTO程序基本知识(四)
- VSTO程序基本知识(五)
- CUDA入门(二)cuda编程的基本知识与第一个cuda程序
- Java程序性能调优的基本知识和JDK调优
- 关于微信小程序的基本知识
- 小程序应该如何入门,初学者应该掌握哪些基本知识?
- 【软件工程技术之程序版本控制】SVN的使用——基本知识,Server搭建与Client日常使用维护
- 程序设计基本知识结构
- Java2实用教程(第二版)程序代码——第二十一章 Java网络的基本知识
- 我的VSTO之路(三):Word基本知识
- C程序设计语言- 函数与程序结构-3.1----函数的基本知识、外部变量、作用域规则、头文件
- 程序破解基本知识
- 关于linux图形界面编程基本知识 - 技术文档 - 程序开发 Linux时代 - 开源、... (转载)
- 我的VSTO之路(三):Word基本知识
- ARM汇编程序基本知识[笔记]
- ARM汇编程序基本知识