您的位置:首页 > 编程语言 > C#

C#动态生成子菜单(以IE收藏夹菜单为例)

2009-02-03 16:20 375 查看



[title3][/title3]

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)); //递归使用,生成子菜单
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: