zoukankan      html  css  js  c++  java
  • 根据数据库表动态添加菜单及打开窗体

    1.引用TabMid.dll 及Janus系列DLL

    2.在主界面上拖入Janus.Windows.ButtonBar和System.Windows.Forms.MenuStrip,及

    System.Windows.Forms.TabControl控件并布局

    3.窗体加载中,先对TabMid.TabMidForm或TabMid.BarMidForm的属性ApplicationNameSpace赋值,应

    用程序的命名空间,示例:

    tb.ApplicationNameSpace = "MidTest";

    4.窗体加载中,查询菜单表tbMemu,返回DataTable,并调用CreatMemu创建菜单,设置单击事件委托

    方法,创建菜单代码调用示例和绑定委托方法示例:

    tb.CreatMemu(menuStrip1.Items, dt, "0");
    bf.CreatMemu(buttonBar1, dt);
    tb.MemuClickFunction 
    = MemuClickT;
    bf.MemuClickFunction 
    = BarMemuClickT;

    5.ButtonBar图标说明:在主界面上拖入System.Windows.Forms.ImageList并添加图标项,在数据库

    表tbMemu里的字段flngICO设置相应的Index(必须设置)


    6.在委托方法中调用TabMidFormShow或BarMidFormShow方法打开窗体,单击委托方法示例:


    private void MemuClickT(object sender, EventArgs e)
            {
                
    //打开窗体
                ToolStripMenuItem tab = (ToolStripMenuItem)sender;
                tb.TabMidFormShow(tct, tab.Tag.ToString(), tab.Text);            
            }
            
    private void BarMemuClickT(object sender,Janus.Windows.ButtonBar.ItemEventArgs 

    e)
            {
                
    //打开窗体
                Janus.Windows.ButtonBar.ButtonBarItem itm = 

    (Janus.Windows.ButtonBar.ButtonBarItem)sender;
                bf.BarMidFormShow(tct, itm.Tag.ToString(), itm.Text);
            }

    7.最后在TabControl控件的双击事件中加入关闭TAB的代码,示例:

    private void tct_DoubleClick(object sender, EventArgs e)
            {
                
    //关闭窗体
                int i = tct.SelectedIndex;
                tct.TabPages.RemoveAt(i);
            }

    8.关于权限控制菜单,可以根据权限表和菜单表创建一个视图,只要视图中包含tbMemu表中的所有列

    即可

    9.添加新的窗体后,将窗体的命名空间修改为一层,如:MidTest。再在数据库表tbMemu添加一条新

    记录:
    fstrCode  窗体的类名
    fstrName  菜单的TEXT
    flngFatherID  上级菜单的flngID
    flngICO   ButtonBar图标,看第5步骤


     下载源码

    原理:通过数据库表的结构和数据使用递归方式创建菜单的项,再根据菜单项使用System.Activator.CreateInstance的方式创建窗体并显示

  • 相关阅读:
    解决:Ubuntu12.04下使用ping命令返回ping:icmp open socket: Operation not permitted的解决
    【Magenta 项目初探】手把手教你用Tensorflow神经网络创造音乐
    python表达式操作符【学习python必知必会】
    关于提高python程序执行效率的思路和想法
    动手前的构思在编写程序中的重要性
    python 之禅
    HTTP 访问学习笔记 留坑
    软件工程与方法学——面向对象程序设计例子
    python 英文字串首字母改为大写
    Objective-C:方法缓存
  • 原文地址:https://www.cnblogs.com/yunxizfj/p/1595135.html
Copyright © 2011-2022 走看看