首页 > 开发 > 综合 > 正文

用C#写vs插件中的一些Tip

2024-07-21 02:18:10
字体:
来源:转载
供稿:网友


最近用c#写了一个vs的插件,主要功能是插入标准的注释段和一些常用的代码段。在开发过程中,遇到了一些问题,也翻阅了一些资料,做了一番研究。这里对其中的一些小问题做一个简单的纪录,希望能够有所帮助。

(1)在onconnection中,判断connectmode时,一定要加上ext_cm_afterstartup

if(connectmode == extensibility.ext_connectmode.ext_cm_uisetup
|| connectmode == extensibility.ext_connectmode.ext_cm_startup
|| connectmode == extensibility.ext_connectmode.ext_cm_afterstartup) // this line will work when u choose addin in addin manager
这样子,在vs的addin manager中选中插件时,插件才会重新显示出来,一般的范例中,只有前两个判断

(2)querystate中,设置state时,要使用下面语句

if( 是你加入的command )
{
if( 满足显示的条件 )
status = (vscommandstatus)vscommandstatus.vscommandstatussupported|vscommandstatus.vscommandstatusenabled;
else
status = (vscommandstatus)vscommandstatus.vscommandstatussupported;
}
else
status = (vscommandstatus)vscommandstatus.vscommandstatusunsupported;
这样做,才能在条件不满足时,插件的菜单变灰

(3)判断代码窗口存在的方法是

(applicationobject.activewindow != null) && (applicationobject.activewindow.type == vswindowtype.vswindowtypedocument)

就是说当前有活动窗口,而且其类型是文档类型

(4)在文档窗口插入字符的方法是

textselection ts = (textselection)applicationobject.activedocument.selection;
editpoint ep = ts.activepoint.createeditpoint();

ep.insert(strcode);
当然,还可以调用editpoint的其它方法,来实现删除,替换等等

差不多就酱紫了,感觉用c#来做插件程序好简单啊,同时感到微软设计的对象模型用起来真是舒服,平时开发时如果能够自己设计出这么好的系统,该有多好阿,哈哈





发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表