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)); //递归使用,生成子菜单
}
}
}
相关文章推荐
- c#使用Dataset读取XML文件动态生成菜单的方法
- C# 使用数据库和MenuStrip动态生成菜单
- 用C#从数据库动态生成AdminLTE菜单的一种方法
- c#:Dataset读取XML文件动态生成菜单
- ASP.NET MVC动态生成网站菜单及子菜单
- 用C#从数据库动态生成AdminLTE菜单的一种方法
- 动态生成收藏夹菜单
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- C# WinForm 用MenuStrip动态生成菜单并动态加载事件
- DevExpress动态生成菜单、子菜单
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- C# TreeView菜单,MenuStrip菜单递归动态生成例子
- 用C#从数据库动态生成AdminLTE菜单的一种方法
- C# 利用xml动态生成带图标菜单
- c#从数据库读取数据动态生成树形菜单
- javascript动态生成树形菜单的方法
- C#也能动态生成Word文档并填充数据
- C# 调用WebService的3种方式 :直接调用、根据wsdl生成webservice的.cs文件及生成dll调用、动态调用