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. NFS 网络文件系统挂载在A8板子上

    我承认自己是菜鸟,没什么网络知识就来搞挂载nfs网络文件系统,花费了5天的时间才把nfs网络文件系统成功挂载在A8板子上,实现了A8板子和虚拟机的文件共享.分享一下个人经验: 以下是基于nfs已经完成 ...

  2. <Oracle Database>后台进程

    进程监视器进程(PMON)  这个进程负责在出现异常中止的连接之后完成清理.PMON会回滚未提交的工作,并释放为失败进程分配的SGA资源.PMON还负责监视其他的Oracle后台进程,并在必要时(如果 ...

  3. Android中 int 和 String 互相转换的多种方法

    1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...

  4. 基于Moodle的IT课程辅助教育平台搭建

    基于Moodle的IT课程辅助教育平台搭建 Moodle是一个开源课程管理系统(CMS),也被称为学习管理系统(LMS)或虚拟学习环境(VLE).它已成为深受世界各地教育工作者喜爱的一种为学生建立网上 ...

  5. hdu 4982 Goffi and Squary Partition

    Goffi and Squary Partition Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Subm ...

  6. android数据库SQLite的设计模式

    Dao设计模式可能是使用最多的数据库的设计模式其基本思路是将数据库操作的代码 与设计代码分离以便于维护和升级.具体的实现方法是使用包,然后在设计代码中调 用数据库的操作代码,dao设计模式需要创建5个 ...

  7. 练习1-12:编写一个程序,以每行一个单词的形式打印其输入(C程序设计语言 第2版)

    #include <stdio.h> #define NOT_BLANK 1 #define BLANK 0 main() { int c; int last_ch = NOT_BLANK ...

  8. 《你必须知道的.NET》读书笔记:从Hello World认识IL

    通用的语言基础是.NET运行的基础,当我们对程序运行的结果有异议的时候,如何透过本质看表面,需要我们从底层来入手探索,这时候,IL便是我们必须知道的基础. 一.IL基础概念 1.1 什么是IL? IL ...

  9. 冲刺阶段 day12

    项目进展 周二我们将专业管理部分又继续做了完善,之前漏掉的几项功能也都在熟能生巧中编写的越来越顺畅,但还差最后一点数据库部分没能实现,我们会尽快完成. 存在问题 还是与数据库的连接上出现问题,部分不能 ...

  10. Java提高配(三七)-----Java集合细节(三):subList的缺陷

    我们经常使用subString方法来对String对象进行分割处理,同时我们也可以使用subList.subMap.subSet来对List.Map.Set进行分割处理,但是这个分割存在某些瑕疵. 一 ...