zoukankan      html  css  js  c++  java
  • Ligg.EasyWinApp-102-Ligg.EasyWinForm:Function--ControlBox、Tray、Resize、Menu

    首先请在VS里打开下面的文件,我们将对源码分段进行说明:

     Function(功能):一个应用的功能界面,一个应用对应多个Function(功能);如某应用可分为管理员界面、用户界面。

    首先我们来看一下继承关系

        public partial class StartForm : FunctionForm

        public partial class FunctionForm : FrameForm

        StartForm是继承FunctionForm的,FunctionForm是继承FrameForm的。对UI操作大部分在FunctionForm上完成。

    LoadForm方法里读取FunctionFormStyle

        对于MultipleView从 .Applicationsxxxx(Apllication)ClientsFormFunctionsyyyy(Function) FunctionFormStyle.xml读取FunctionFormStyle至_functionFormStyle。FunctionFormStyle 的各属性如下:

        对于SingleView

        从 .Applicationsxxxx(Apllication)ClientsFormFunctionsyyyy(Function) Formoneszzzz(Zone) Feature.xml读取FunctionFormStyle至_functionFormStyle

    InitLayout方法

        首先是确定Form的Text, 如果传参里包含了Text,就使用传参的,如果没有,就采用缺省的:就去里根据Function或Zone的Name去从 .Applicationsxxxx(Apllication)abbrevAnnexes.xml读取。

       

        然后确定ControlBox

     

        然后确定Form的WindowState

       

        然后确定Form的尺寸

      

         然后确定Form的Icon

        然后确定Form的Tray,是否把关闭按钮当作最小化按钮

        下面的代码是在弹出一个Dialog时,让Dialog出现在中间靠上的位置

    请至https://github.com/Liggin2019/Ligg.EasyWinApp/blob/master/demo/demo.rar下载,运行Form-MutiView-ITSmaoa-AdmKt0-CustMenu-AssignedTitle相关执行文件,查看Text由外部传参的配置。

    Tray读取和显示(InitTray方法)

        首先读取Tray的定义文件和Icon;对Multiple View在对于MultipleView从 .Applicationsxxxx(Apllication)ClientsFormFunctionsyyyy(Function) TrayMenuItems.xml读取;对于SingleView

    从 .Applicationsxxxx(Apllication)FormFunctionsyyyy(Function)Clients Formoneszzzz(Zone) TrayMenuItems.xml读取

     请至https://github.com/Liggin2019/Ligg.EasyWinApp/blob/master/demo/demo.rar下载,运行Form-MutiView-ITSmaoa-AdmKt1-CustMenu-Tray相关执行文件,查看带Trayform的配置

    ResizeRegion方法

        FrameForm顾名思义是Form的框架,它首先横向切了5刀,把Form分为6个Section,如下:

        MainMenuSection(Dock: Top)

        ToolBarSection(Dock: Top)

        ShortcutSection(Dock: Top)

        NavigationSection(Dock: Top)

        MainSection(Dock: Top)

        RunningMessageSection(Dock: Down)

        然后在每个Section上从左到右在切几刀,划分为不同的Region(Dock: Left或Right)。如下图:

     

    以下代码初始化每个Section和Region是否显示,及其尺寸

    例如:在https://github.com/Liggin2019/Ligg.EasyWinApp/blob/master/demo/demo.rar  

    _functionFormStyle.ResizeRegionParams=

    ”MainMenu:0;ToolBarSection:64,600,370;NavigationSection:0;ShortcutSection:0;MainSectionLeftNavDivision:0,0,0;MainSectionRightNavDivision:145,175,145;MainSectionMainDivision:130,0;MainSectionRightDivision:230,34,0;RunningMessageSection:0;RunningStatusSection:26,0;HorResizableDivisionStatus:none”

    Menu的读取和显示

        menu只在MutilpleView的情况下存在,有2种类型:

        缺省(Simple)采用Winform自带的ToolStripMenuItem控件;另一种(Customized)是本框架在揣摩 SAP GUI和SEP客户端后独创一种以用View(视图)实现多窗体(MDI)的效果的菜单形式。

     

        然后根据FunctionFormStyle.xml里的配置,决定采用哪一种菜单。

        以下代码是在LoadForm方法里确定采用哪一种菜单类型:

        以下代码是从配置文件.Applicationsxxxx(Apllication)ClientsFormFunctionsyyyy(Function) MenuItems.xml读取菜单数据到_layoutElements

     

        菜单配置文件里的元素包含以下类型:

     

    •  ViewMenuItem点击时会触发ViewMenuItemClickHandler,显示当前View,并隐藏前一个View。
    •  DisplayAndTransactionItem是会显示和带Action的菜单项,当点击时会触发ControlEventHandler并执行一个Act方法。
    • TransactionOnlyItem不显示,只会被DisplayAndTransactionItem调用。
    • DisplayOnlyItem只显示的菜单项,如分隔条。
    • ViewMenuArea是一个Panel,是上述类型的容器,可以包含ViewMenuItem、DisplayAndTransactionItem、DisplayOnlyItem菜单项。
    • ToolMenuArea是一个Panel,是上述类型的容器,可以包含DisplayAndTransactionItem、DisplayOnlyItem菜单项。

        见以下示例:

    ViewMenuArea包含的菜单项(Customized Menu)

    ToolMenuArea包含的菜单项(Customized Menu)

     

    ViewMenuArea包含的菜单项(Simple Menu)

     

     ToolMenuArea包含的菜单项(Simple Menu)

        以下代码确定当前显示的View,分几种情况:一种是RereshUi后重显(如登录后重显),一种是传参,一种是缺省(在配置文件MenuItems.xml里定义)

     

        下面的代码就是分2种类型Render菜单,请大家自行阅读代码

     

    请至https://github.com/Liggin2019/Ligg.EasyWinApp/blob/master/demo/demo.rar

    下载,运行Form-MutiView-ITSmaoa-AdmKt1-CustMenu Form-MutiView-ITSmaoa-AdmKt4-SimpMenu相关执行文件,查看2种不同菜单情况下的form的配置

    点击ViewMenuItem显示和隐藏View、以及View下各个Zone的排列和传参,请看下一章节文档。

    LiggEasyWinApp-103-Ligg.EasyWinFormView

  • 相关阅读:
    VMware 中安装Centos
    go with go
    [APIO2012]派遣【左偏树】
    后缀自动机三·重复旋律6
    AC自动机(二次加强版)
    [HAOI2016]找相同字符【GSAM广义后缀自动机】
    吉司机线段树【学习笔记】
    [ZJOI2015]诸神眷顾的幻想乡【GSAM】
    广义后缀自动机(广义 SAM)【模板】
    Important Sisters【HDU-4694】【Dominator Tree】
  • 原文地址:https://www.cnblogs.com/liggin2019/p/11961951.html
Copyright © 2011-2022 走看看