资源预览内容
第1页 / 共11页
第2页 / 共11页
第3页 / 共11页
第4页 / 共11页
第5页 / 共11页
第6页 / 共11页
第7页 / 共11页
第8页 / 共11页
第9页 / 共11页
第10页 / 共11页
亲,该文档总共11页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
实现Visual Studio 2010一个很简单的很酷的扩展 作者: 日期:基本介绍篇 在实现这个扩展之前,让我们先弄清楚这个扩展实现什么功能。这个扩展实际上是在你的VS窗口的右上角创建了一个信息框代码。该信息框显示您的源代码的统计信息。这些信息包括: 1、文件的代码行数 2、文件的字符数 3、命名空间的个数 4、字段个数 5、接口个数 6、类的个数 7、函数个数 8、属性个数 9、注释的数量10、统计文件的大小(Bytes, KB, MB等)。 当您键入您的代码,你会看到信息窗口中的数据会即时更新。 这个信息窗口,是利用可扩展面板。你可以把它看成两个部分,每一个部分都可以根据您的需要展开和折叠。这样,当你不需要它时,你将它可以折叠起来,需要的时候,将它展开。下面演示如何展开/折叠这个控件。 这个控件有三个特殊的状态。第一个状态是一个很小的扩展按钮。如上图的第一部分。只需点击它,就会打开控件右侧的面板,这个面板显示文件的基本数据,如上图的第二部分。这个控件还有一个可扩展面板,如果点击扩展,就会看到下面的面板,其中显示其他的统计数据,如上图的第三部分。实现篇: 需要软件: 1、 Microsoft Visual Studio 2010 2、 Visual Studio 2010 SDK 你安装 Visual Studio SDK之后,你的Visual Studio 2010中会多出下面这些模板: 这篇文章中,我们使用模板Editor ViewPort Adornment实现这个扩展,此模板将为你的代码编辑器的带来一个装饰品。 其实这个扩展包一个WPF用户控件,我把它放进VS的视窗中就成了信息框。它还含有两个类,一个类用来解析代码,获取代码的相关信息;另一个类用来处理自定义编辑器的事件和当页以及加载的时候将WPF控件添加到页面中。第一步:创建一个Viewport Adornment项目 我们从Extensibility中选择Viewport Adornment模板创建一个项目。这将生成一个SourceManifest文件和两个类文件。一个是Adornment类本身,另外一个是AdornmentFactory类。第二步:添加一个WPF用户控件 右键单击项目,选择添加一个新的WPF用户控件。为了简单起见,我使用了一个用户控件。这个用户控件实际上包含一个Expander控件,设置它的ExpandDirection = Left,它里面又包含了一些TextBlock控件和另外一个Expander ,设置里面的这个Expander的ExpandDirection = Down。看下面的代码(我删除不必要的元素,使其更简单):13411182021273440414243 你可以看到,代码很简单,两个Expanders,一个用来显示基本的统计信息和另外一个显示扩展的统计信息。我还使用StackPanel来固定TextBlocks布局。 现在,如果你看一下后台代码,发现它也一样简单。其实我已经创建了一个CodeInfoTracker类,用它来为我们分析源代码文件。我只是为我们的用户控件添加了一个构造函数,使用户控件更具扩展性而已。1privateCodeInfoTracker_cinfo;2privateCodeInfoTracker.Calculators_calculator;3publicucInfoBox(CodeInfoTrackercinfo)4:this()56this._cinfo=cinfo;78publicvoidUpdateInfo(CodeInfoTrackerinfo)910_calculator=info.PerFormCalculate();11this.txtNoLines.Text=string.Format(NoofLines:0,12_calculator.no_of_lines);13this.txtNoCharacters.Text=string.Format(NoofCharacters:0,14_calculator.no_of_characters);15this.txtFileSize.Text=string.Format(TotalFileSize:0,16_calculator.totalfilesize);1718StringBuilderbuilder=newStringBuilder();19if(this._calculator.interfaces!=0)20builder.AppendFormat(Interfaces:0nr,21this._calculator.interfaces);22if(this._calculator.namespaces!=0)23builder.AppendFormat(NameSpaces:0nr,24t
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号