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. JAVA里面的IO流(一)分类2(节点流和处理流及构造方法概要)

    IO流根据处理对象的不同分为节点流和处理流. 直接对文件进行处理的流为节点流: 对流进行包装从而实现对文件的优化处理的流为处理流. 节点流类型: 可以看出,节点流主要分这几大类: 文件流 文件流构造方 ...

  2. React Native填坑之旅--Flow篇(番外)

    flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...

  3. MongoDB学习笔记—03 增删改查操作

    MongoDB的CURD操作分别通过函数insert().update().find().remove()进行 MongoDB文档新增与删除 MongoDB中关于文档的新增与删除比较简单.主要通过in ...

  4. 在mac下svn冲突或其它什么原因无法更新svn副本或是必须要删除svn信息时,如何清除svn信息

    find . -type d -name ".svn"|xargs rm -rf 出处: http://blog.csdn.net/springsky_/article/detai ...

  5. mysql group_concat 使用 (按分组组合字段)

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DES ...

  6. 《理解 ES6》阅读整理:函数(Functions)(六)Purpose of Functions

    明确函数的双重作用(Clarifying the Dual Purpose of Functions) 在ES5及更早的ES版本中,函数调用时是否使用new会有不同的作用.当使用new时,函数内的th ...

  7. 使用yum时,保留下载包设置

    配置yum保留已经下载的rpm包,供以后升级或重新安装时使用.修改/etc/yum.conf[main]cachedir=/home/soft1/yumcachekeepcache=1debuglev ...

  8. 视频聊天室可以用php制作吗?

    首先,告诉你单纯用php制作视频聊天室是实现不了的,需要配合其他技术手段一起操作,例如和FLASH配合,使用FLASH获取语音(FLASH可以获取访问端的设备,例如摄像头). PHP运行在服务器端,是 ...

  9. Hibernate自动创建表

    只要在hibernate.cfg.xml添加这句话,就可以自动生成数据表 <property name="hibernate.hbm2ddl.auto">update& ...

  10. RCP中如何使用代码安装、运行plugins

    其实在google或者http://www.eclipse.org/forums/就能够找到这个问题的答案. 搜索关键字:rcp install plugins\bundles programmati ...