淺析Visual Studio.NET插入日期功能
大家知道Visual Studio.NET嗎?在這里給大家介紹創建一個簡單插入日期的功能,準確的是在當前光標的位置或則當前選擇文本的地方插入當前日期。這是Visual Studio.NET中已經包含了一個用宏實現此功能的例子。所以你可以看見通過宏和插件兩種不同的方法實現同樣的功能。
#T#這個例子非常簡單,只需要你修改一個在前面列出來的那個Exec函數。通過前面章節我已經創建了一個基本插件,這個插件的名字是“TextUtil”更加確切的說是“TextUtil.Connect.TextUtil”。在Exec函數中我替換了向導自動生成的代碼。
- handled=true;
替換為
- handled=InsertDate();
增加如下InsertData()函數,可以在Connect對象中的任何地方增加該函數。
- privateboolInsertData()
- {
- if(applicationObject.ActiveDocument!=null)
- ((TextSelection)applicationObject.ActiveDocument.Selection).Text
- =DateTime.Now.ToString("yyy-MM-dd");
- returntrue;
- }
InsertData函數使用了System.DateTime和Sytem.String對象。關于System.String的介紹可以參看幫助。在這里我注意到在OnConnection中關于CommandBars的三行代碼,這三行代碼是在以后運行的過程中要在工具菜單中建立菜單項。除了名稱插件已經完成。按F5來試驗插件。一個新的IDE實例運行,在這個實例中這個插件將出現在工具|外接程序管理對話框中。可以通過選中再外接程序管理對話框中最左面的復選框來加載插件。現在你可以打開任何一個文本文件,然后再VisualStudio.NET的命令窗口中輸入“TextUtil.Command.TextUtil”在當前光標的位置將插入當前日期。事實上在你完成輸入之前自動變異已經天填充了命令。
當你按下F5開始運行一個IDE新的實例的時候,你的插件是在調試模式下。我們可以在調試模式下發現所有異常的信息。在普通的操作中出現了任何的異常,他們都可能不可用。盡可能的得到異常的信息,那么錯誤的原因就會盡早的發現。
Visual Studio.NET改變命令名稱
向導已經為菜單命令指定了默認的名字(TextUtil)。因此這個名字是不具有特色描述的,我一會會增加更多的菜單命令、改變菜單命令名稱。同時,因為我在改變命令名稱的時候遇到過名稱混亂的情況,所以我們必須確認我們的插件不會有相同的命令名稱。***個改變是在OnConnection函數中調用AddNameCommand之處
- Commandcommand=commands.AddNamedCommand(addInInstance,
- "InsertDate",
- "InsertCurrentDate",
- "InsertCurrentDate",
- true,59,refcontextGUIDS,
- (int)vsCommandStatus.vsCommandStatusSupported
- +(int)vsCommandStatus.vsCommandStatusEnabled);
在QuertyStatus中更改如下:
- if(commandName.ToLower()=="textutil.connect.insertdate")
向導在初始運行加載之前應經注冊了插件信息,但是名稱的改變影響了注冊信息。這就意味著在增加了插件功能的時候我們需要從新生成插件項目和安裝項目。然后再運行安裝程序。運行插件(原文:RunningtheMacro譯者:可能是錯誤)
現在“TextUtil.Connect.InsertDate”命令可以按照我的想法工作了。但是,他是怎么工作的呢?讓我們繼續往下看。

















