六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在Visual Studio.NET中使用自定義插件最大化您的生產力(3)

[摘要]插件是怎么工作的?在前面章節中給你們演示的InsertDate代碼是相當簡單的,而且自動完成功能讓人感覺不可思議。我將從對象瀏覽器開始(Object Browser)開始,因為他能夠非常容易的讓我們學習對象所以他是一非常好的助手。你可以在你要查看的對象上單擊右鍵然后選擇轉到定義(Go To Def...
插件是怎么工作的?

在前面章節中給你們演示的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.







主站蜘蛛池模板: 欧美特黄三级在线观看 | 色无极在线影院 | 青草青视频在线观看 | 在线观看精品视频一区二区 | 性亚洲无删减 | 日本免费久久 | 色夜视频 | 天天色爱 | 素人约啪| 日韩精品亚洲专区在线影视 | 亚洲精品乱码国产精品乱码 | 亚洲 欧洲 日产 韩国在线 | 亚洲天堂婷婷 | 天堂在线最新资源 | 天天干天天舔天天操 | 欧洲视频一区 | 亚洲成人午夜影院 | 亚洲精品乱码久久久久久 | 四虎成人免费 | 日日夜夜免费精品 | 无人精品乱码一区二区三区 | 一级片久久 | 欧美一卡二卡三卡四卡乱码 | 欧美性理论片在线观看片免费 | 日韩在线黄色 | 亚洲婷婷丁香 | 天堂资源中文在线 | 亚洲精品伊人 | 日本一区二区三区四区无限 | 一二三四在线观看高清在线观看一 | 速度与激情9全集免费观看 速度与激情9免费完整版高清 | 中文字幕视频一区 | 午夜老司机免费视频 | 亚洲成人一级片 | 午夜影院观看 | 亚洲第一综合网站 | 偷拍第一页 | 特黄特a级特别特级特毛片 特黄视频免费看 | 色综合成人网 | 亚洲人影院 | 亚洲精品乱码中文字幕无线 |