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

2016-01-29 13:47 4 1 收藏

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

【 tulaoshi.com - ASP.NET 】

最近用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;
这样做,才能在条件不满足时,插件的菜单变灰

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com)

来源:https://www.tulaoshi.com/n/20160129/1491480.html

延伸阅读
C#中一些字符串操作的常用用法 //获得汉字的区位码 byte[]array=newbyte[2]; array=System.Text.Encoding.Default.GetBytes("啊"); inti1=(short)(array[0]-''\0''); inti2=(short)(array[1]-''\0''); //unicode解码方式下的汉字码 array=System.Text.Encoding.Unicode.GetBytes("啊"); i1=(short)(array[0]-...
!--StartFragment--ADSL自动拨号类,前提是在系统中已经有了一个宽带拨号连接 调用代码: RASDisplay ras = new RASDisplay(); ras.Disconnect();//断线 ras.Connect("adsl");//拨号  代码如下: using System;  using System.Runtime.InteropServices;  public struct RASCONN...
第八章    用C#写组件     这一章关于用C#写组件。你学到如何写一个组件,如何编译它,且如何在一个客户程序中使用它。更深入一步是运用名字空间来组织你的应用程序。     这章由两个主要大节构成:     。你的第一个组件     。使用名...
一、引言 1. 问题的引入 假设你设计的程序已经部署到用户的计算机上,并且能够正常运行了。但是有一天,用户打来了电话他们要求增加新的功能。确定了用户的需求后,你竟然发现原有的软件架构已经无法胜任新增任务的需求你需要重新设计这个应用了!但问题是,就算你又用了一个开发周期完成了用户需要的应用,却不能保证用户的需求...
用C#编写ActiveX控件(一)     前些日子做一个Web项目,必须自己编写一个ActiveX控件。如今的ActiveX控件大多是使用VB/C++来开发的,而我对他们并不熟悉,因此考虑使用熟悉的C#编写ActiveX控件。     首先,建立一个WinForm控件项目HelloWorld,并拖入一个Label控件,文字设为HelloWorld,如图: U...

经验教程

763

收藏

87
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部