分享
 
 
 

在Visual Studio.NET中使用自定义插件最大化您的生产力(三)Custom Add-Ins Help You Maximize the Productivity of Visual Studio .NET

王朝c#·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

插件是怎么工作的?

在前面章节中给你们演示的InsertDate代码是相当简单的,而且自动完成功能让人感觉不可思议。

我将从对象浏览器开始(Object Browser)开始,因为他能够非常容易的让我们学习对象所以他是一非常好的助手。你可以在你要查看的对象上单击右键然后选择转到定义(Go To Definition)来快事的查看类的成员。最终结果参看图4,你可以在列出的成员中查看任何一个成员的原型,或则选择一个成员按F1访问在先帮助。

图4 对象浏览器

applicationObject对象描述了插件宿主(host)应用程序,在这个例子中宿主(host)应用程序为Visual Studio .NET IDE。applicationObject在OnConnection方法中实现。在在线帮助中找到“DTE”,甚至在向导自动产生的代码中声明为“_DTE”类型的变量applicationObject。在应用程序级别你会看到她又许多有趣的成员。

其中一个成员是ActiveDocument属性(property),它描述了当前焦点的文档(document)。这个文档就是你要进行InsertDate操作的文档。在窗口焦点和文档焦点有关系但是不同的情况下,一个非常有用的规则是,不管窗体是否有焦点具有焦点的文档都是将要被保存的。

ActiveDocument.Selection属性返回一个描述当前在文档中选择的对象。因为在C#中它是一个普通对象,所以我他它强制类型转换成TextSelectioni。ActiveDocument是一个普通的类,因为document(译者:类似于VC++中的document类)没有必要基于text,就好比一个窗体设计document(译者:学过VC++的人可能比较熟悉document类的继承关系,不熟悉的人可以看看有关这方面的书籍)。作为最终结果Selection属性也是一个普通的类,在这里我把它强制类型转换成类我们在代码中实际操作的TextSelection类型。

TextSelection描述了一个文件的视图(view),并且这个文件的动作和工具|选项中的设置还有使用的状态一至。他提供了很多的你可能想到用于修改文件的属性和方法,还有他可以影响使用的视图(view),当前选择的内容,插入位置。如果你曾经录制过宏,你可以看见使用TextSelection对象来捕获内容。

InsertDate简单的的设置了Text属性值是当前的日期。类似Text一样,所有的动作都可以设置同类型的值。这就意味着所有得到的内容都要被替换,如果没有选择内容那么就会在光标的位置上替换,不过你要注意当前的状态是插入还是覆盖模式。

另外一种方法是使用Insert函数,这个方法允许你控制文本放置的位置和描述了一个不能重做的动作。使用这个方法来替换Text属性指定插入内容的代码如下:

((TextSelection)applicationObject.ActiveDocument.Selection).Insert(

DateTime.Now.ToString("yyyy-MM-dd"),

(int)EnvDTE.vsInsertFlags.vsInsertFlagsCollapseToEnd);

这个vsInsertFlags指出了文本已什么方式什么位置插入的。在线帮组中忽略了vsInsertFlags的文档,所以我在图5中包含了这部分。

现在你因该理解了插件是怎么工作的了,让我们为这个命令简单的作一个键盘邦定和增加一个菜单。

图5 vsInsertFlags 值

vsInsertFlagsCollapseToEnd

The selection's current

contents are deleted before

performing the insertion, and

the TextSelection is left empty

at the end of the newly

inserted text.

vsInsertFlagsCollapseToStart

The selection's current

contents are deleted before

performing the insertion, and

the TextSelection is left empty

at the beginning of the newly

inserted text.

vsInsertFlagsContainNewText

The selection's current

contents are replaced with the

inserted text, and the

TextSelection is left containing

the new text.

vsInsertFlagsInsertAtStart

The inserted text is placed at

the beginning of the

TextSelection, and the

resulting TextSelection

contains both the new and

previous text.

vsInsertFlagsInsertAtEnd

The inserted text is placed at

the end of the TextSelection,

and the resulting

TextSelection contains both

the new and previous text.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有