新增菜单窗体没有显示也不能导入菜单解决方案 - MenuItemTag/MenuType详解
新增菜单窗体没有显示也不能导入菜单解决方案。
内容包括:
1. 分配菜单权限
2. MenuItemTag详解
3. MenuType详解
解决方案
- 打开当前模块主窗体frmModuleMain.cs文件,检查SetMenuTag方法, 必须指定菜单的权限值(窗体最大可用权限):
C# 全选
/// <summary>
/// 定义菜单与窗体的功能权限。
/// </summary>
private void SetMenuTag()
{
//新增的菜单功能,必须指定权限值
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
}
注:AuthorityCategory.REPORT_ACTION_VALUE=96
2. 给新菜单对象.Tag指定权限后,重新编译,就可以导入菜单了。
菜单管理界面 用于查看软件项目内所有菜单的权限值,如下图所示:
MenuItemTag详解
MenuItemTag类用于设置菜单的最大可用权限,也可理解为给窗体界面定义权限。
C# 全选
/// <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; } }
}
使用方法
给菜单对象的Tag属性设置实例。
C# 全选
//新增的菜单功能,必须指定权限值
menuDynamicReport.Tag = new MenuItemTag(MenuType.DataForm, (int)CSFrameworkV5.Interfaces.ModuleID.ReportModule, AuthorityCategory.REPORT_ACTION_VALUE);
MenuType详解
开发框架支持的菜单类型。
C# 全选
/// <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
}
常用1、2、3、4、6五种类型。
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网