QAVisual Studio .NET 2003Windows 2003Visual Studio 2005Windows 2000Windows XP.NET 2.0Windows FormsC# 2.0中级开发Visual StudioWindows.NETC#
从 Visual Studio 2003、2005 和 2008 的启动页面的“最近项目”列表中删除链接






4.90/5 (19投票s)
此应用程序从 Visual Studio 2003/2005/2008 的启动页面的“最近项目”列表中删除链接。

引言
本文介绍了如何通过访问注册表键并执行删除和修改等操作,从 Visual Studio 2003/2005/2008 的启动页面的“最近项目”列表中删除链接。
背景
一段时间前,我想从“最近项目”列表中删除一些链接,但不知道该怎么做。我在网上搜索,找到了描述如何删除它们的文章,但它们都描述了一个手动过程:从“运行”中打开 Regedit,等等……因此,我决定编写一个小应用程序来自动化此任务。
代码
PopulateListView 方法
您可以使用此应用程序或源代码在您自己的应用程序中使用。
第一个方法用于填充表单中的 ListView
。
private void PopulateListView(string versaoVS)
{
RegistryKey regKey = Registry.CurrentUser;
regKey = regKey.OpenSubKey
("Software\\Microsoft\\VisualStudio\\" + versaoVS + "\\ProjectMRUList");
lstvRecentProjects.Items.Clear();
if (regKey == null) return;
foreach (string keyname in regKey.GetValueNames())
{
try
{
ListViewItem item = new ListViewItem();
item.Checked = false;
string kname = keyname;
string value = (String)regKey.GetValue(kname);
RegistryValueKind valuekind = regKey.GetValueKind(kname);
lstvRecentProjects.SmallImageList = imgList;
item.Text = ReturnTexto(value);
item.Tag = valuekind;
item.SubItems.Add(value);
item.ImageIndex = ReturnImageIndex(item.Text);
lstvRecentProjects.Items.Add(item);
lstvRecentProjects.Refresh();
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message +
"\r\nPlease report this Exception, " +
"mail to carlosaraiva@gmail.com!", "Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}
DeleteRegKey 方法
您可以使用此应用程序或源代码在您自己的应用程序中使用。第二个方法用于在从 ListView
中选择一个项目或解决方案并单击 Delete
按钮后删除注册表键。
private void DeleteRegKey()
{
string versaoVS = null;
if (rdbVS2003.Checked)
versaoVS = "7.1";
if (rdbVS2005.Checked)
versaoVS = "8.0";
if (rdbVS2008.Checked)
versaoVS = "9.0";
try
{
RegistryKey regKey = Registry.CurrentUser;
regKey = regKey.OpenSubKey("Software\\Microsoft\\VisualStudio\\" +
versaoVS + "\\ProjectMRUList", true);
bool delete = false;
string name = "File";
if (regKey == null) return;
foreach (ListViewItem item in lstvRecentProjects.Items)
{
if (item.Checked)
{
delete = true;
lstvRecentProjects.Items.Remove(item);
foreach (string keyname in regKey.GetValueNames())
{
regKey.DeleteValue(keyname);
}
}
}
if (delete)
{
lstvRecentProjects.Refresh();
foreach (ListViewItem item in lstvRecentProjects.Items)
{
int key = item.Index + 1;
string keyname = name + key.ToString();
regKey.SetValue(keyname, item.SubItems[1].Text,
(RegistryValueKind)item.Tag);
}
}
}
catch (Exception ex)
{
MessageBox.Show("Exception: " + ex.Message +
"\r\nPlease report this Exception, " +
"mail to carlosaraiva@gmail.com!", "Exception",
MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
历史
- 2007 年 5 月 25 日:初始发布
- 2008 年 4 月 24 日:文章已更新