Welcome

首页 / 软件开发 / .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。相信在了解了 这些接口后,你在操作编辑器时会得心应手的。