快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

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

最近用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#来做插件程序好简朴啊,同时感到微软设计的对象模型用起来真是舒适,平时开发时假如能够自己设计出这么好的系统,该有多好阿,哈哈


返回类别: 教程
上一教程: 转贴:Microsoft Application Center 2000 组件负载平衡技术概述(1)
下一教程: ASP.NET中数据库的操作初步(3)

您可以阅读与"用C#写vs插件中的一些Tip"相关的教程:
· .NET中的数据类型的一些变化
· 在 ASp+ 中的一些可能会用到的 小函数
· .Net正式版中的一些Bug及其解决方案
· vs.net编译器里面的一个小技巧!一定要看约!
· 在ASP.NET中处理 datetime 的一些通用函数(vb)
    微笑服务 优质保证 索取样品