• Enterprise Solution 界面设计规范


    Enteprise Solution有一套自己的界面设计规范,也是很多年(10年以上)管理软件界面精华的积累。没有一个软件从一开始就很善于界面设计,许多个小小的改善,比如控件位置的移动,控件摆放顺序的改变,都是经过客户检验或是深思熟虑的。

    1 对于必须输入值的项,控件中有小光标表示。

     

    image

    如上图所示,合约编号和 客户编号都是必须输入的,所以该控件的右边有一个小光标显示。当控件中有值时,这个光标不再显示。

    国内的管理软件比如金蝶软件,对于必须输入值,它会在标签处标识一个星号,如下图所示,端口号的标签后面有一个星号,表示该项为必须输入项。

    image

    2  统一的界面操作,增删查改都是统一的界面。

    参考销售合同的界面,最上面是菜单,由框架根据当前打开的功能加载,菜单下面是工具条,可以做什么操作一目了然。

    image

    界面状态栏显示当前登入的账套,用户和期间。

    3 查找与钻取

    对于引用其它主档或是单据的字段,应该要增加查找,方便用户从弹出窗口中选择值。同时也需要增加钻取,以方便直接跳转到对应的功能中。

    查找客户窗体例子:

    image

    钻取有点类似于网页中的链接,双击后可打开功能。比如上面销售合同中的客户编号字段,DE有下划线,双击后直接打开维护客户主档功能。

    4 将作用相似的控件组合在一起,方便用户操作识别。

    参考下面的销售单的部分界面,与财务相关的控件用付款组合框包括起来(GroupBox),与成本相关的内容用成本累总组合框包括起来。

    image

    成本累总组合框中,有一个依次累总的含义在里面,比如成本中相关的公式是:

    净贸易金额= 总物料金额 + 税额, 贸易折扣金额=总物料金额 *  贸易折扣

    公式中右边的项列在前面,排列到最后的控件一般是总计。

    5  屏幕分辨率

    WinForms桌面程序在遇到不同尺寸的显示器,控件的位置对齐方面需要仔细测试。目前采取的方法是固定设计器的尺寸,所有的控件都必须摆放在固定尺寸的控件中,不允许拖动窗体基类的尺寸。Enterprise Solution界面基类EntryForm的尺寸如下代码所示。

    this.ClientSize = new System.Drawing.Size(912, 656);

    对于设计器界面摆放不下的控件,可以增加TabPage来重新摆放,保证所有的窗体满足最小的尺寸的屏幕而不用来回拖动固定条。

    6 对于长时间运行的操作,提供进度条、动画等反映正在进行的比较耗时间的过程。

    首先所有关于数据操作的地方,Enterprise Solution都会将它封装到BackgroundWorker控件中调用,这样可避免死锁界面。上图中销售合同的界面,工具条中的每一个按钮事件,都会调用它关联的后台线程控件。

    如果是专门的数据处理程序,则会单独用进度条显示,以增加界面友好性。

    image

    7  根据用户的权限或当前的状态自动隐藏或者禁用功能

    用户不能点或是不应该点的按钮应该变灰色或是直接隐藏。

    用户没有权限查看的字段需要隐藏。

    用户不能进入的公司账套需要隐藏。

    这个部分的要点就是变灰和隐藏,保证界面简单友好。试想用户点击一个按钮,系统再提示没有权限去查看,界面体验性该有多糟糕。

    8 界面元素的长度

    界面元素的长度是按照数据库中对应的字段长度设计的。参考第4条中的界面元素,控件的长度也表达了数据库中对应的字段的长度。

    除非是特殊要求或是要求对齐美观,Enterprise Solution 90%以上的界面控件都是依据数据库字段的长度设计的。

    9  执行破坏性的作之前,需要获得用户的确认

    这是必须要做到的,关于删除操作或是过帐操作,必须用户确认才可以继续。不过为了照顾到用户的感受,同时也可以提供不用确认的方法供程序员调用。

    SaveEntity(bool showConfirm)
    

    //默认调用传递true,也可以传false参数以表示不需要确认 SaveEntity(true);

    10  输入数据或递交数据时,进行相应的数据校验

    LLBL Gen Pro自动为每个实体类生成一个验证类型,在这里编写实体相关的验证代码。

    [Serializable]
    
        public partial class SalesContractValidator : ValidatorBase
    
        {
    
            // Add your own validation code between the two region markers below. You can also use a partial class and add your overrides in that partial class.
    
    
    
            // __LLBLGENPRO_USER_CODE_REGION_START ValidationCode
    
            public override bool ValidateFieldValue(IEntityCore involvedEntity, int fieldIndex, object value)
    
            {
    
                bool result = base.ValidateFieldValue(involvedEntity, fieldIndex, value);
    
                if (!result) return false;
    
    
    
                switch ((SalesContractFieldIndex) fieldIndex)
    
                {
    
                    case SalesContractFieldIndex.CustomerNo:
    
                        return this.ValidateCustomerNo((string) value);
    
                }
    
    
    
                return true;
    
            }
    
    
    
            private bool ValidateCustomerNo(string value)
    
            {
    
                if (!string.IsNullOrEmpty(value))
    
                {
    
                    ICustomerManager customerManager = ClientProxyFactory.CreateProxyInstance<ICustomerManager>();
    
                    customerManager.ValidateCustomerNo(Shared.CurrentUserSessionId, value);
    
                }
    
    
    
                return true;
    
            }

    数据验证包含字段值验证,数据表必须输入字段验证,逻辑验证。开发继承于EntryForm的功能的窗体有一半的工作量就是在做数据验证。

    11  行列间距保持一致

    行和列的间距基本要求是保持12pt,这也是微软推荐的间距。在设计器中拖动控件时,设计器会显示出一点小横线,表示距离正好是12pt,此时可放开控件让它落在当前位置上。

    image

    看图中的几条线,智能的窗体设计器在帮助对齐控件间的位置。

    12  界面的色调让人感到统一

    所有的界面只用基本的控件颜色,除非是客户要求的颜色或是特殊的功有,上面几张图中的控件颜色都是统一的。下面的订单追踪功能,用颜色来标识特殊的数据,起到画龙点睛的作用。

    image

    ASP.NET Web开发中经常会用到交替颜色,不同的行颜色不一样,每隔一行会用相同的颜色标识。WinForms程序中也有客户喜好这种交替色的方案。

    13  键盘键编程

    以下几个方面要重点测试,必须严格遵守:

    1  Tab键的顺序,一般是从上到下,从左到右;
    2  热键的使用,逐一测试;一般在控件上要标示出来,写代码时用&表示后面的字符是热键。
    3  Enter键常常用来用跳转到下一行或下一个控件(TabIndex顺序)的方法。

    14 目前做不到的地方

    1  对于常用的功能,做到不必阅读手册就使用

    ERP软件界面复杂,很少有功能是可以直接看界面就可以学会操作。

    2  是否提供UNDO功能用以撤销不期望的操作

    只有很少的功能提供UNDO操作,比如取消送货,取消记帐凭证。

    复杂的逻辑逆转操作需要写很多代码或操作,单据间的关联也需要维护,给系统增加了相当的复杂度。

    3  所有界面元素提供了充分而必要的提示

    WinForms提供了Tooltips控件,当鼠标旋停在控件上时,会显示一段提示性的文字,或是在桌面的右下角冒出气泡的提示。

    对于更多的界面元素的用法,还是要参考帮助手册,或是向技术支持要求支援。

  • 相关阅读:
    设计规范理解
    JVM读书笔记
    springboot整合RabbitMQ
    springboot 整合Redis
    tomcat原理
    配置嵌入式Servlet容器
    Springboot自动配置原理
    Springboot启动原理
    Springboot配置文件加载顺序
    修改VisualSVN Server地址为ip地址,修改svn服务端地址为ip或者域名地址的方法
  • 原文地址:https://www.cnblogs.com/JamesLi2015/p/4629092.html
Copyright © 2020-2023  润新知