最新文章
·C#和C++的速度大比拼(...
·ASP.NET分页组件更新...
·密码的故事 (ST:MS,Au...
·Whidbey中客户端回调...
·关于C#中,继承类重写...
·使用Publish/Subscrib...
·在vs.net bate 2中的a...
·用存储过程sp_rename
·对虚拟的看法
·C# 文件拆分器
·动态菜单
·实体类的设计
相关文章
·XML 与 HTML 的主要区...
·将一个图片按比例缩放...
·.NET开发平台研究(四)...
·webservice系列教学(...
·Windows消息类,续一
·ASP.NET中在线用户统...
·使用 Visual C# .NET ...
·在ASP.NET中使用Sessi...
·.NET Framework環境下...
·COM+ Web 服务:通过...
·VB.NET 实现DirectSou...
·.net辅助工具列表
推荐文章
·C#语言初级入门(4)
·如何动态加载控件以及...
·续(这个例子是针对AC...
·检测客户端显示器分辨...
·.net 中的事务总结
·asp.net 2.0中TREEVIE...
·使用 Visual Basic .N...
·如何在vs.net中利用UM...
·SOAP净化有线协议(一...
·ASP.NET中根据XML动态...
·在控制台应用程序中实...
·天天学C#-委托
  您现在的位置: 休闲居 >> 网络学院 >> 网络编程 >> .NET开发 >> 

在Visual Studio.NET中使用自定义插件最大化您的生产力(二)
  人气: 【字体:大 中 小】
  发布时间:2004-12-29 01:01:04

一个简单的编辑功能:插入日期

我创建了一个简单插入日期的功能,确切的功能是:在当前光标的位置或则当前选择文本的地方插入当前日期。这是Visual Studio .NET中已经包含了一个用宏实现此功能的例子。所以你可以看见通过宏和插件两种不同的方法实现同样的功能。这个例子非常简单,只需要你修改一个在前面列出来的那个Exec函数。通过前面章节我已经创建了一个基本插件,这个插件的名字是“TextUtil”更加确切的说是“TextUtil.Connect.TextUtil”。在Exec函数中我替换了向导自动生成的代码。
休闲 居 编 辑
handled = true;

替换为

handled = InsertDate();

增加如下InsertData()函数,可以在Connect对象中的任何地方增加该函数。

private bool InsertData()

{

if(applicationObject.ActiveDocument!= null)

((TextSelection)applicationObject.ActiveDocument.Selection).Text

=DateTime.Now.ToString("yyy-MM-dd");

return true;

}

InsertData函数使用了System.DateTime和Sytem.String对象。关于System.String的介绍可以参看帮助。在这里我注意到在OnConnection中关于CommandBars的三行代码,这三行代码是在以后运行的过程中要在工具菜单中建立菜单项。

除了名称插件已经完成。按F5来试验插件。一个新的IDE实例运行,在这个实例中这个插件将出现在工具|外接程序管理对话框中。可以通过选中再外接程序管理对话框中最左面的复选框来加载插件。现在你可以打开任何一个文本文件,然后再Visual Studio .NET的命令窗口中输入“TextUtil.Command.TextUtil”在当前光标的位置将插入当前日期。事实上在你完成输入之前自动变异已经天填充了命令。

当你按下F5开始运行一个IDE新的实例的时候,你的插件是在调试模式下。我们可以在调试模式下发现所有异常的信息。在普通的操作中出现了任何的异常,他们都可能不可用。尽可能的得到异常的信息,那么错误的原因就会尽早的发现。

改变命令名称

向导已经为菜单命令指定了默认的名字(TextUtil)。因此这个名字是不具有特色描述的,我一会会增加更多的菜单命令、改变菜单命令名称。同时,因为我在改变命令名称的时候遇到过名称混乱的情况,所以我们必须确认我们的插件不会有相同的命令名称。

第一个改变是在OnConnection函数中调用AddNameCommand之处

Command command = commands.AddNamedCommand(addInInstance,

"InsertDate",

"Insert Current Date",

"Insert Current Date",

true, 59, ref contextGUIDS,

(int)vsCommandStatus.vsCommandStatusSupported

+(int)vsCommandStatus.vsCommandStatusEnabled);



在QuertyStatus中更改如下:

if(commandName.ToLower() == "textutil.connect.insertdate")

向导在初始运行加载之前应经注册了插件信息,但是名称的改变影响了注册信息。这就意味着在增加了插件功能的时候我们需要从新生成插件项目和安装项目。然后再运行安装程序。




图3 运行插件(原文:Running the Macro 译者:可能是错误)

现在“TextUtil.Connect.InsertDate”命令可以按照我的想法工作了(图3)。但是,他是怎么工作的呢?让我们继续往下看。

≡ 查看、发表评论 ≡