(精华)2020年02月13日 WinForm进销存管理系统项目实战(MenuStrip菜单控件的使用)
【摘要】
1.先设置MenuStrip的Name
2.获取数据源遍历添加到菜单上
/// <summary>
///递归添加菜单项
/// </summary>
/// <pa...
1.先设置MenuStrip的Name
2.获取数据源遍历添加到菜单上
/// <summary>
///递归添加菜单项
/// </summary>
/// <param name="mList"></param>
/// <param name="pMenu"></param>
/// <param name="pId"></param>
private void AddMenuItem(List<MenuInfoModel> mList, ToolStripMenuItem pMenu, int pId)
{
//获取所有子菜单列表
var childList = mList.Where(m => m.ParentId == pId);
foreach (var child in childList)
{
if(child.MDesp==MenuDesp.OpenSys.ToString()&&hasOpened)
{
continue;
}
if(child.MDesp==MenuDesp.UnOpenSys.ToString()&&!hasOpened)
{
continue;
}
ToolStripMenuItem mi = new ToolStripMenuItem();
mi.Name = child.MId.ToString();
mi.Text = child.MName;
if (!string.IsNullOrEmpty(child.MKey))
{
//alt+K
string sKey = child.MKey.ToString().Trim();
//设置Alt快捷键 Ctrl+P Shift+C
if (sKey.Length > 1 && sKey.Split('+')[0].ToLower() == "alt"&& child.ParentId==0)
{
mi.Text += $"(&{sKey.Split('+')[1]})";
}
mi.ShortcutKeys = SetShortKeys(sKey);
}
//菜单项关联页面
if (!string.IsNullOrEmpty(child.MUrl))
{
mi.Tag = child;
}
//菜单项响应事件注册(先没有子菜单的)有关联和没有关联页面
if (mList.Where(m => m.ParentId == child.MId).ToList().Count == 0)
{
mi.Click += Mi_Click;
}
if (pMenu != null)
pMenu.DropDownItems.Add(mi);
else
PSIMenus.Items.Add(mi);
AddMenuItem(mList, mi, child.MId);//为当前菜单项添加它的子菜单
}
}
文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。
原文链接:codeboy.blog.csdn.net/article/details/113802336
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)