新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag详解
新增菜单窗体没有显示也不能导入菜单解决方案, 包括:
1. 分配菜单权限
2. MenuItemTag详解
3. MenuType详解
解决方案:
1. 打开当前模块主窗体frmModuleMain.cs文件,检查SetMenuTage方法, 必须指定菜单的权限值(窗体最大可用权限):

MenuItemTag详解
MenuType详解:开发框架支持的菜单类型。
解决方案:
1. 打开当前模块主窗体frmModuleMain.cs文件,检查SetMenuTage方法, 必须指定菜单的权限值(窗体最大可用权限):
C# Code:
/// <summary>
/// 定义菜单与窗体的功能权限。
/// </summary>
private void SetMenuTag()
{
//新增的菜单功能,必须指定权限值
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 定义菜单与窗体的功能权限。
/// </summary>
private void SetMenuTag()
{
//新增的菜单功能,必须指定权限值
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
AuthorityCategory.REPORT_ACTION_VALUE=96
2. 给新菜单对象.Tag指定权限后,重新编译,就可以导入菜单了。
菜单管理界面 用于查看软件项目内所有菜单的权限值,如下图所示:

MenuItemTag详解
MenuItemTag类用于设置菜单的最大可用权限,也可理解为给窗体界面指定最大可用权限。
C# Code:
/// <summary>
/// 设置菜单的权限。
/// 给菜单对象的Tag属性分配此对象类型的实例,menuXXX.Tag=new MenuItemTag();
/// </summary>
public class MenuItemTag
{
private MenuType _type;
private int _moduleID;
private int _FormAuthorities;
/// <summary>
/// 构造器
/// </summary>
/// <param name="type">菜单类型</param>
/// <param name="moduleID">模块编号</param>
/// <param name="formAuthorities">窗体的可用权限</param>
public MenuItemTag(MenuType type, int moduleID, int formAuthorities)
{
_type = type;
_moduleID = moduleID;
_FormAuthorities = formAuthorities;
_ActionNames = new Hashtable();
}
private Hashtable _ActionNames = null;
/// <summary>
/// 当前菜单功能按钮的自定义名称(支持多个自定义名称), 扩展按钮使用
/// </summary>
public Hashtable ActionNames
{
get { return _ActionNames; }
}
/// <summary>
/// 设置功能菜单的功能按钮权限名称, 扩展按钮使用
/// </summary>
/// <param name="action">功能按钮编号</param>
/// <param name="actionName">自定义名称</param>
public void SetActionName(int action, string actionName)
{
if (_ActionNames.ContainsKey(action))
_ActionNames[action] = actionName;
else
_ActionNames.Add(action, actionName);
}
/// <summary>
/// 菜单类型
/// </summary>
public MenuType MenuType { get { return _type; } }
/// <summary>
/// 模块编号
/// </summary>
public int ModuleID { get { return _moduleID; } }
/// <summary>
/// 窗体的可用权限
/// </summary>
public int FormAuthorities { get { return _FormAuthorities; } }
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// <summary>
/// 设置菜单的权限。
/// 给菜单对象的Tag属性分配此对象类型的实例,menuXXX.Tag=new MenuItemTag();
/// </summary>
public class MenuItemTag
{
private MenuType _type;
private int _moduleID;
private int _FormAuthorities;
/// <summary>
/// 构造器
/// </summary>
/// <param name="type">菜单类型</param>
/// <param name="moduleID">模块编号</param>
/// <param name="formAuthorities">窗体的可用权限</param>
public MenuItemTag(MenuType type, int moduleID, int formAuthorities)
{
_type = type;
_moduleID = moduleID;
_FormAuthorities = formAuthorities;
_ActionNames = new Hashtable();
}
private Hashtable _ActionNames = null;
/// <summary>
/// 当前菜单功能按钮的自定义名称(支持多个自定义名称), 扩展按钮使用
/// </summary>
public Hashtable ActionNames
{
get { return _ActionNames; }
}
/// <summary>
/// 设置功能菜单的功能按钮权限名称, 扩展按钮使用
/// </summary>
/// <param name="action">功能按钮编号</param>
/// <param name="actionName">自定义名称</param>
public void SetActionName(int action, string actionName)
{
if (_ActionNames.ContainsKey(action))
_ActionNames[action] = actionName;
else
_ActionNames.Add(action, actionName);
}
/// <summary>
/// 菜单类型
/// </summary>
public MenuType MenuType { get { return _type; } }
/// <summary>
/// 模块编号
/// </summary>
public int ModuleID { get { return _moduleID; } }
/// <summary>
/// 窗体的可用权限
/// </summary>
public int FormAuthorities { get { return _FormAuthorities; } }
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
使用方法:
给菜单对象的Tag属性分配此对象类型的实例
C# Code:
//新增的菜单功能,必须指定权限值
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
//来源:C/S框架网 | www.csframework.com | QQ:23404761
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
//来源:C/S框架网 | www.csframework.com | QQ:23404761
MenuType详解:开发框架支持的菜单类型。
C# Code:
/// <summary>
/// 菜单类型
/// </summary>
public enum MenuType
{
/// <summary>
/// 未知类型(未使用)
/// </summary>
Unknow = 0,
/// <summary>
/// 模块主菜单(模块的一级菜单)
/// </summary>
Module = 1, //
/// <summary>
/// 数据窗体菜单
/// </summary>
DataForm = 2,
/// <summary>
/// 父级菜单(下面有子菜单)
/// </summary>
ItemOwner = 3,
/// <summary>
/// 报表菜单
/// </summary>
Report = 4,
/// <summary>
/// 独立功能(用于扩展)
/// </summary>
Action = 5,
/// <summary>
/// 对话框
/// </summary>
Dialog = 6
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761
/// 菜单类型
/// </summary>
public enum MenuType
{
/// <summary>
/// 未知类型(未使用)
/// </summary>
Unknow = 0,
/// <summary>
/// 模块主菜单(模块的一级菜单)
/// </summary>
Module = 1, //
/// <summary>
/// 数据窗体菜单
/// </summary>
DataForm = 2,
/// <summary>
/// 父级菜单(下面有子菜单)
/// </summary>
ItemOwner = 3,
/// <summary>
/// 报表菜单
/// </summary>
Report = 4,
/// <summary>
/// 独立功能(用于扩展)
/// </summary>
Action = 5,
/// <summary>
/// 对话框
/// </summary>
Dialog = 6
}
//来源:C/S框架网 | www.csframework.com | QQ:23404761

参考文档:
窗体的自定义按钮权限控制-扩展权限按钮详解
扩展按钮功能 - 扩展一个【复制单据】按钮操作详解
开发框架支持三级菜单及权限控制,有图详解
详解DevExpress.LookUpEdit控件实现自动搜索定位功能|C/S开发框架
达梦数据库数据类型详解
.NET8 WebApi框架接口认证方式:Bearer Token/Jwt Token详解|C/S开发框架
DevExpress XtraReport 开发指南|单表报表设计详解(C#)|C/S开发框架
FastReport.NET2023报表数据源配置详解|C/S开发框架
C# Math.Round方法MidpointRounding参数详解|C/S开发框架
DatabaseProvider类详解|C/S开发框架
UserConfig类详解 | Winform 蝇量级开发框架|C/S开发框架
DataDictCache | 全局缓存设计逻辑详解|C/S开发框架
DataBinder类详解 | Winform MiniFramework蝇量框架|C/S开发框架
ucButtonFunction 组件详解|MiniFramework蝇量框架|Winform框架|C/S开发框架
WinFramework轻量级开发框架 | 功能按钮事件详解|C/S开发框架
WinFramework轻量级开发框架 | 窗体继承关系图详解|C/S开发框架
窗体的自定义按钮权限控制-扩展权限按钮详解
扩展按钮功能 - 扩展一个【复制单据】按钮操作详解
开发框架支持三级菜单及权限控制,有图详解
详解DevExpress.LookUpEdit控件实现自动搜索定位功能|C/S开发框架
达梦数据库数据类型详解
.NET8 WebApi框架接口认证方式:Bearer Token/Jwt Token详解|C/S开发框架
DevExpress XtraReport 开发指南|单表报表设计详解(C#)|C/S开发框架
FastReport.NET2023报表数据源配置详解|C/S开发框架
C# Math.Round方法MidpointRounding参数详解|C/S开发框架
DatabaseProvider类详解|C/S开发框架
UserConfig类详解 | Winform 蝇量级开发框架|C/S开发框架
DataDictCache | 全局缓存设计逻辑详解|C/S开发框架
DataBinder类详解 | Winform MiniFramework蝇量框架|C/S开发框架
ucButtonFunction 组件详解|MiniFramework蝇量框架|Winform框架|C/S开发框架
WinFramework轻量级开发框架 | 功能按钮事件详解|C/S开发框架
WinFramework轻量级开发框架 | 窗体继承关系图详解|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
