public void FavorMenuItem() //动态生成收藏夹菜单
{
try
{
string favorfolder = Environment.GetFolderPath(Environment.SpecialFolder.Favorites); //获取系统收藏夹路径
ListMenuItem(收藏夹ToolStripMenuItem, new DirectoryInfo(favorfolder)); //引用生成收藏夹菜单的函数, 这个收藏夹ToolStripMenuItem参数是指向你要加入菜单的父菜单
}
catch (System.Exception ex)
{
throw ex;
}
}
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();
ShouCangsMenuItem[i].Click += new EventHandler(ShouCangsMenuItem_Click); //为生成的子菜单添加单击消息(可写一个消息处理函数,这里就不例出来了)
//是文件
if (file !=null)
{
string str = file.Name; //获取收藏夹的文件名(都是URL文件)
str = str.Remove(str.Length - 4); //去掉.url后缀名
ShouCangsMenuItem[i].Text = str; //然后赋值给菜单文本
toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]); //生成的子菜单添加到上一级菜单
}
//对于子目录,进行递归调用
else
{
DirectoryInfo Direct = files[i] as DirectoryInfo;
ShouCangsMenuItem[i].Text = files[i].Name;
toolstripmenuitem.DropDownItems.Add(ShouCangsMenuItem[i]); //生成的子菜单添加到上一级菜单
ListMenuItem(ShouCangsMenuItem[i], new DirectoryInfo(Direct.FullName)); //递归使用,生成子菜单
}
}
}