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

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

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

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

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

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

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

3 查找与钻取

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

查找客户窗体例子:

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

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

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

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

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

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

5  屏幕分辨率

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

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

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

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

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

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

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,此时可放开控件让它落在当前位置上。

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

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

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

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

13  键盘键编程

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

1  Tab键的顺序,一般是从上到下,从左到右;
2  热键的使用,逐一测试;一般在控件上要标示出来,写代码时用&表示后面的字符是热键。

3  Enter键常常用来用跳转到下一行或下一个控件(TabIndex顺序)的方法。

14 目前做不到的地方

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

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

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

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

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

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

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

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

Enterprise Solution 界面设计规范的更多相关文章

  1. Enterprise Solution 3.1 企业应用开发框架 .NET ERP/CRM/MIS 开发框架,C/S架构,SQL Server + ORM(LLBL Gen Pro) + Infragistics WinForms

    行业:基于数据库的制造行业管理软件,包含ERP.MRP.CRM.MIS.MES等企业管理软件 数据库平台:SQL Server 2005或以上 系统架构:C/S 开发技术 序号 领域 技术 1 数据库 ...

  2. Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架

    Enterprise Solution 是一套管理软件开发框架,在这个框架基础上开发出一套企业资源计划系统Enterprise Edition. 现将Enterprise Solution开发过程中遇 ...

  3. Windows 10 部署Enterprise Solution 5.5

    Windows 10正式版发布以后,新操作系统带来了许多的变化.现在新购买的电脑安装的系统应该是Windows 10.与当初用户不习惯Windows 7,购买新电脑后第一个想做的事情就是重装成XP,估 ...

  4. Enterprise Solution 企业资源计划管理软件 C/S架构,支持64位系统,企业全面应用集成,制造业信息化

    Enterprise Solution是一套完整的企业资源计划系统,功能符合众多制造业客户要求.系统以.NET Framework技术作为开发架构,完善的功能可有效地帮助企业进行运营策划,减低成本,如 ...

  5. Windows Server 2012部署Enterprise Solution 5.4

    最近一个客户升级系统,改用Windows Server 2012作为服务器操作系统.升级之后性能未见明显的改善,在不改变代码的基础上,考虑到C/S架构的能力,增加内存或是处理器的处理能力似乎可以解决一 ...

  6. Enterprise Solution 企业管理软件开发框架

    Enterprise Solution 开源项目资源汇总 Visual Studio Online 源代码托管 企业管理软件开发框架 Enterprise Solution 是一套管理软件开发框架,在 ...

  7. iOS和Android的app界面设计规范(转)

    记录一下iOS和Andoird的界面设计规范,方便进行标准的产品设计,并与设计师顺畅沟通 iOS篇 界面尺寸 设备 分辨率 状态栏高度 导航栏高度 标签栏高度 iPhone6 plus 1242×22 ...

  8. Enterprise Solution 2.2 开发帮助文档集合

    首先是一个PPT文档,从宏观层面展示Enterprise Soltion的几个功能特色. Enterprise Solution解决方案安装与配置 将源代码解决方案和演示程序在电脑中进行配置,作为了解 ...

  9. (转)iOS7界面设计规范(13) - UI基础 - 与iOS的系统整合

    突然就到了周日傍晚.你永远不会知道自己的生活在接下来的一周当中能够发生多少变化:各种不可预知性所带来的更多是快感还是焦虑与不安,冷暖自知.相比之下,白天工作当中那些需求列表与排期文档就显得那么可爱了, ...

随机推荐

  1. iOS 字符串转son  json转字符串

    + (NSString*)dictionaryToJson:(NSDictionary *)dic {     NSError *parseError = nil;    NSData *jsonDa ...

  2. spring AOP应用

    转自:http://wb284551926.iteye.com/blog/1887650 最近新项目要启动,在搭建项目基础架构的时候,想要加入日志功能和执行性能监控的功能,想了很多的想法,最后还是想到 ...

  3. 第8章 NAND FLASH控制器

    8.1 NAND Flash介绍和NAND Flash控制器使用 NAND Flash在嵌入式系统中的地位与PC上的硬盘类似 NAND Flash在掉电后仍可保存 8.1.1 Flash介绍 有NOR ...

  4. 开源的EtherCAT Master简介

    EtherCAT的主站开发是基于EtherCAT机器人控制系统的开发中非常重要的环节.目前常见开源的主站代码为的RT-LAB开发的SOEM (Simple OpenSource EtherCAT Ma ...

  5. 实现Ogre的脚本分离 - 天龙八部的源码分析(一)

    目的 在研究天龙八部游戏的源码之时, 发现 Ogre 材质的模板部分被单独放在一个 material 文件之内, 继承模板的其他材质则位于另外的文件, 当我使用Ogre 官方源码, 加载脚本时其不会查 ...

  6. C++混合编程之idlcpp教程Lua篇(8)

    上一篇在这 C++混合编程之idlcpp教程Lua篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程LuaTutorial6中,同样加入了四个文件:LuaTutori ...

  7. Excel使用技巧总结

    Excel博大精深,此文用来记录Excel的使用技巧 1.多个单元格值添加单引号,比如:A1单元格的值为123444,添加单引号之后变为'123444',可以在B1或者其他任一空的单元格内输入公式:& ...

  8. EQueue - 一个C#写的开源分布式消息队列的总体介绍

    前言 本文想介绍一下前段时间在写enode时,顺便实现的一个分布式消息队列equeue.这个消息队列的思想不是我想出来的,而是通过学习阿里的rocketmq后,自己用c#实现了一个轻量级的简单版本.一 ...

  9. 来科普下游标(MSSQL)这东西。。。

    刚刚接到一个面试电话,对头的先生问我懂不懂触发器和存储过程,当时是觉得有些好笑,毕竟“视图.触发和存储”是咱数据库工程师的吉祥三宝,怎么可能不认识?只是稍后他还问了下游标这东西,仔细想想我是不常使用C ...

  10. Viewbox在UWP开发中的应用

    Windows 8.1 与Windows Phone 8.1的UAP应用,终于在Windows 10上统一到了UWP之下.原来3个不同的project也变为一个.没有了2套xaml页面,我们需要用同一 ...