首页 / 软件开发 / .NET编程技术 / Visual Studio 2008可扩展性开发(七):操作文本编辑器
Visual Studio 2008可扩展性开发(七):操作文本编辑器2011-04-05 博客园 Anders Cui前言在可扩展性开发(六)中,我介绍了对于Solution Explorer的基本操作。不过,对咱 们开发人员来说,绝大部分时间面对的还是编辑器。VS2008的编辑器功能已经颇为强大了,如果我们能熟练使用快捷键,编写代码的过程 是相当舒服的,就像《卓有成效的程序员》中所说:“编程时始终优先使用键盘而非鼠标”但问题在于,VS面向的是所有的开发人员群体,它只能够提供最通用的功能,如果对 VS的编辑器有些额外的需求,我们只好自己动手了,本文将介绍如何扩展文本编辑器。AOM中编辑器相关的接口跟以前一样,这里首先简单介绍一下AOM中的相关接口、类型。1)Documents在默认情况下,VS会以标签式文档呈现打开的各个文档。这些文档的集合在AOM中就是 Documents,它实现了IEnumerable接口。通过该接口,我们可以获取当前打开的文档,它 的重要属性和方法有:Count:打开文档的数目;Add():向集合中添加新的文档;CloseAll():关闭所有文档,它的参数为vsSaveChanges枚举,可提供关闭时的行为选 项,比如提示用户进行保存;Item():根据索引获取集合中的某个文档;Open():打开一个文档;SaveAll():保存所有文档。这些成员的含义是相当简单、直白的。我们可以通过循环变量所有打开的文档,以获 取所有文档的信息,对于单个文档来说,它对应于Document接口。2)Document表示在VS中打开进行编辑的文档。它的成员较多,这里仅介绍一下比较重要的几个:FullName/Path/Name:文档的全名、所在目录、文件名;Language:文档的语言类型,如CSharp;ProjectItem:获取与文档关联的ProjectItem对象;Selection:文档中的选定内容;Type:文档的类型;Activate():将焦点移至该文档;Close():关闭文档;Redo()/Undo():执行Redo/Undo操作;Save():保存文档。关于Document成员的详细信息,请参看这里。其中的Selection属性非常有用,因为很 多时候我们都是先选中文档的部分内容,再进行相应的操作。另外,在打开的多个文档中 ,只有一个处于活动状态,可以使用DTE.ActiveDocument属性来快速获取该文档。在获取文档的引用后,下一步就可以考虑如何进行编辑了。我们得了解5个接口: TextSelection、TextPoint、EditPoint、VirtualPoint、TextDocument。相信在了解了 这些接口后,你在操作编辑器时会得心应手的。