获取浏览器的收藏夹 标签列表 并展示
winform程序:包含空间:menuStrip控件
界面如下:
代码:
//获取收藏夹路径
string favorfolder = Environment.GetFolderPath(Environment.SpecialFolder.Favorites);//获取系统收藏夹路径
public Form1()
{
InitializeComponent();
ListMenuItem(收藏夹ToolStripMenuItem2, new DirectoryInfo(favorfolder));
}
private List<FileInfo> mUrlFileList = new List<FileInfo>();
/// <summary>
/// 加载标签至menuStrip控件
/// </summary>
/// <param name="toolstripmenuitem">ToolStripMenuItem即menuStrip控件的下级菜单控件</param>
/// <param name="info">收藏夹路径</param>
public void ListMenuItem(ToolStripMenuItem toolstripmenuitem, FileSystemInfo info) //生成收藏夹菜单的函数,递归使用
{
if (!info.Exists) return;
DirectoryInfo dir = info as DirectoryInfo;
//不是目录
if (dir == null) return;
FileSystemInfo[] files = dir.GetFileSystemInfos();
ToolStripMenuItem[] ShouCangsMenuItem = new ToolStripMenuItem[files.Length];
for (int i = 0; i < files.Length; i++)
{
FileInfo file = files[i] as FileInfo;
ShouCangsMenuItem[i] = new System.Windows.Forms.ToolStripMenuItem();
//是文件
if (file != null)
{
if (file.Extension == ".url")
{
mUrlFileList.Add(file);
// ShouCangsMenuItem[i].Image = global::MyWebBrowser2010.Properties.Resources.ie1;//菜单项图片
string str = file.Name; //获取收藏夹的文件名(都是URL文件)
str = str.Remove(str.Length - 4); //去掉.url后缀名
ShouCangsMenuItem[i].Text = str; //然后赋值给菜单文本
List<string> src = new List<string>();
try
{
StreamReader sr = file.OpenText();//获取文件输入流
string source = null;
while ((source = sr.ReadLine()) != null)
{
src.Add(source);//文件所有行添加到List<string>中
}
}
catch (Exception)
{
throw;
}
ShouCangsMenuItem[i].Tag = src;
foreach (string stri in src)
{
if (stri != null)
{
if (stri.StartsWith("URL="))
{
ShouCangsMenuItem[i].ToolTipText = stri.Remove(0, 4);//ToolTipText
}
}
}
toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]); //生成的子菜单添加到上一级菜单
ShouCangsMenuItem[i].Click += new EventHandler(ShouCangsMenuItem_Click); //为生成的子菜单添加单击消息(可写一个消息处理函数,这里就不例出来了)
}
}
//对于子目录,进行递归调用
else
{
DirectoryInfo Direct = files[i] as DirectoryInfo;
ShouCangsMenuItem[i].Text = files[i].Name;
// ShouCangsMenuItem[i].Image = global::MyWebBrowser2010.Properties.Resources.folder2;//菜单项图片
ShouCangsMenuItem[i].ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
ShouCangsMenuItem[i].ImageScaling = System.Windows.Forms.ToolStripItemImageScaling.SizeToFit;
toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]); //生成的子菜单添加到上一级菜单
ListMenuItem(ShouCangsMenuItem[i], new DirectoryInfo(Direct.FullName)); //递归使用,生成子菜单
}
}
}
/// <summary>
/// 触发收藏夹里菜单的单击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void ShouCangsMenuItem_Click(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
string[] tar = ((List<string>)item.Tag).ToArray();
for (int i = 0; i < tar.Length; i++)
{
if (tar[i] != null)
{
if (tar[i].StartsWith("URL="))
{
System.Diagnostics.Process.Start(tar[i].Remove(0, 4));
}
}
}
}
*****
当然图标没显示出来,这个有待研究....