更改Visual Studio“最近的项目”列表的程序编程
来源:互联网 发布:淘宝抢单 编辑:程序博客网 时间:2024/05/01 02:47
天啊,太悲惨了!在浏览器上都写了好长一段,因为上传一张图片服务器没有反应,导致前面的工作毁于一旦。以前就感觉在浏览器上面写东西很危险,今天有幸领教了,再不敢了!
言归正传:先看一下程序界面吧:
源程序下载地址:http://download.csdn.net/source/1957681
用过Visual Studio .NET版本以后IDE开发工具的人肯定都知道Visual Studio里面那个“起始页”以及“起始页”里面的那个“最近的项目”。
不错!“最近的项目”里面保存着我们最近创建和打开的项目文件,为我们快速打开项目提供了一个很好的方式,避免左拐右撞在文件系统中找寻项目的路径。
可是,总感觉这个“最近的项目”有些地方做得不是很完善。比如说:
1、有的时候为了寻求一点帮助打开了别人的项目或是自己以前的项目,这样的不常用项目也会保存在“最近的项目”列表中,占据有限的资源。(“最近的项目”那个栏空间就那么一点,显示不了几个的。而且似乎也没办法扩展,反正我没找到方法)。
2、有的时候一个项目做完了,这个项目还是天天摆在那里,好像是在炫耀自己一样。殊不知,同样是浪费资源。
3、Visual Studio中没有提供(或我没找到)删除“最近的项目”中项目的方法。
基于以上考虑,我就想自己管理那个“最近的项目”列表。
首先、我翻遍计算机,寻找“最近的项目”的藏身之处。可最后,还是Google告诉了我:这个项目列表藏在注册表HKEY_CURRENT_USER/Software/Microsoft/VisualStudio/9.0/ProjectMRUList子键中(以Visual Studio 2008为例)。
名称为“File<序号>”形式,键值为项目文件的完整路径。
这样我就可以通过增减这个注册表来控制“最近的项目”列表了。
做了几次,又发现这种方法太费劲了,每次都要从上到下找到注册表,再删除一些。麻烦!!!
于是就想编一个小程序来控制这个注册表的修改与增补。
用C#编写控制注册表的程序并不难,只要“using Microsoft.Win32;”再利用Registry和RegistryKey这两个类就好了;读取注册表后将列表显示在dataGridView中,通过对dataGridView的行(Rows)进行移动、添加和删除操作并将操作后的列表保存到注册表中来达到改变“最近的项目”列表的目的。
程序的重点有以下几处:
1、读取注册表。
RegistryKey类的详细信息参见http://msdn.microsoft.com/zh-cn/library/microsoft.win32.registrykey.aspx,这里我只列出我所用到的方法:
声明:
- RegistryKey key = Registry.CurrentUser.CreateSubKey("Software//Microsoft//VisualStudio");
方法:
- key.GetSubKeyNames();//获取key下的所有子键名称,该方法返回一个字符串数组(string[])。
- key.GetValueNames();//获取key下的所有项的名称,该方法同样返回一个字符串数组(string[])。就是用这个方法读取项目列表的。
- key.SetValue("file"+(i+1).ToString(), dataGridView1[1, i].Value.ToString(), RegistryValueKind.ExpandString);//设置(创建)项。这个方法参数很多,而且有几种重载格式,我所用到的重载格式个参数的含义依次为:项名称、数据、注册表类型。
- key.DeleteValue(keyNames[i], false);//删除项。参数分别为:项名称、指示在找不到指定值的情况下是否引发异常。
- key.Close();//使用完了,自然要把打开的注册表关上了。
2、修改dataGridView的行(Rows)。
这里面涉及到将数据添加到dataGridView和对某一行执行置顶、置底、上移、下移、删除操作,还要能够执行添加新行的操作。
向dataGridView中添加数据可以通过几种方法实现:
- dataGridView1.Rows[n].SetValues(item);//这里n是行的序数,item是object[]型变量。具体操作可以参见我上传的完整项目文件。
- dataGridView1[Column, Row].Value = "字符串";
- dataGridView1.Rows[Row].Cells[Column].Value = "字符串";
以上后两种方法应该算是等价的,即对单独的单元格进行设置。其中Row是行序号,Column是列序号。
对行进行操作。
操作是在修改行的基础上进行的,无非就是再声明一个缓存变量,将几个相关行的内容反过来倒回去。这里就不讲这个过程了,感兴趣的可以看一下源程序。
在对dataGridView的行进行操作时,有一点需要注意,那就是dataGridView的RowCount属性。在操作(主要是增加)过程中,必须始终操作RowCount以内的行,否则会抛出异常。
为了使dataGridView的RowCount始终与项目个数相等,在删除项目时还要记得执行RowCount--;的操作。这里有个现象很奇怪:当选中最后一行执行删除操作时,在RowCount--;之后,总是删除倒数第二行的数据,而把最后一行补上来。调试很多次一直没找到原因。也许dataGridView就是这样设计的吧。不管了,我也用了一个似乎不太合乎常规的方法将这个问题解决了,那就是执行删除最后一行时,在RowCount--;之前将最后一行的值也赋成倒数第二行的值。最后两个都是倒数第二行的值,不管你删哪个,最后得到的结果都一样。问题就解决了。
3、根据注册表判断电脑上有哪几个版本的Visual Studio。
这里主要通过注册表(HKEY_CURRENT_USER/Software/Microsoft/VisualStudio/9.0/ProjectMRUList)中记录的版本号(9.0)来确定。在网上搜了一下,版本号与Visual Studio版本的对应关系应该是这样的:
我就是按照这样的关系编的程序。如果谁发现上面的对应关系搞错了,请提醒我一下。
好了,解决这三个问题之后其余的就没有什么难度了。
- 更改Visual Studio“最近的项目”列表的程序编程
- 清楚 Visual Studio 上的 开始页面上的最近项目列表(转载)
- Visual Studio项目类型的Guid列表
- Microsoft Visual Studio中删除最近的项目
- visual studio最近项目没有显示的解决方法
- Visual Studio 项目列表清除程序
- 删除 Visual Studio 最近打开文件和项目列表
- 如何更改Visual Studio里已有项目的类型
- 怎么更改visual studio新建项目的默认路径
- Visual Studio 2015的更改
- Visual Studio(vs2005 2008)起始页"最近的项目"不显示最近项目的解决方法
- 如何清除vs studio 里的最近项目列表
- 清理Visual Studio最近打开的项目、文件、查找内容和最近引用组件
- 更改Visual Studio 2010的主题设置
- 更改Visual Studio 2010的主题设置
- 更改Visual Studio 2010的主题设置
- 更改Visual Studio 2010的主题设置
- 更改Visual Studio Code的字体问题
- thinking in java 笔记
- 关于马云语录中的一点小矛盾
- 有关XP上完全删除Oracle 10g的问题
- 很少来这
- U-BOOT的启动流程
- 更改Visual Studio“最近的项目”列表的程序编程
- 脚本在Controller中运行时错误
- 程序员应当学习正则表达式 (摘抄)
- 新年第一篇
- hibernate笔记
- 3
- Java十大人物
- 4
- C++实现模板顺序表和三种排序方法