APP下载

WinForm界面统一管理方法研究

2017-09-29缪平朱晓辉丁浩

软件导刊 2017年9期

缪平 朱晓辉 丁浩

摘 要:随着软件规模的扩大和复杂性的提高,通常使用团队开发模式完成软件的设计与开发,通过多人分工协作可有效提升软件开发效率,但也存在编码风格不一致、命名方式不规范、界面风格不统一等问题,导致后期维护困难,也给用户使用带来不便。针对以上问题,基于WinForm界面的统一管理与优化提出了用户界面自定义和软件界面统一管理两种方式。实验结果表明,这两种方式能够在保证项目开发效率的基础上使命名方式规范、控件风格一致,令开发的软件更方便用户使用。

关键词:WinForm;用户界面自定义;软件界面统一管理

DOI:10.11907/rjdk.171407

中图分类号:TP301 文献标识码:A 文章编号:1672-7800(2017)009-0001-03

Abstract:With the increase of complexity and scale of software development, the team development model is usually used to design and develop software, which can improve software development efficiency with the help of cooperation between team members. However, it can also result in several issues such as inconsistent coding style, irregular naming rules, incongruous graphical user interface (GUI) and so on and make the software difficult to maintain and inconvenient to use. Based on these observation, we propose a user-defined GUI methodology and a unified GUI management to manage and optimize the GUI of WinForm applications. Experiment results show that these two methods can not only improve the software development efficiency but also can keep the consistent coding style and naming rules and make the software easier to use.

Key Words:WinForm; user-defined GUI; unified GUI management

0 引言

隨着计算机软件技术的发展以及软件开发规模的逐渐扩大,各种开发平台得到了广泛运用[1]。WinForm是.Net开发平台中对Windows Form的一种称谓。.NET开发平台具有开发效率高、人机交互界面友好等优势。从用户角度而言,WinForm人机界面友善,且程序开发完成并发布后仅需消耗少量的服务器资源,从而节约了大量成本[2]。而且WinForm系统对数据库处理提供全面支持,可以访问数据库中的数据,并在窗体上显示和操作数据;对软件开发人员而言,WinForm系统维护更加容易,且WinForm控件使用灵活,减少了软件开发人员的代码编写难度,提高了软件开发效率。同时,WinForm控件具有向导功能,可为软件开发者提供窗体创建、数据处理、打包和部署等分步指导,非常适合新手入门使用。因此,使用WinForm的软件开发者逐渐增多。然而,软件开发中编码风格不一致、命名方式不规范、界面风格不统一等问题,将导致后期维护困难,并给用户使用带来极大困难[3],例如:对用于表示“公司编号”的Label控件,由于缺少统一规范,使得软件开发人员将其表示为“公司”、“公司号”等,导致用户在使用过程中因这些不同名称而产生困扰。同时,对于一个大规模的项目而言,因前期系统开发中字段命名的随意性,使得后期维护十分困难,软件开发者将花费大量时间作维护。为解决这一问题,开发了自定义控件,通过自定义字段与数据库连接,获取控件界面规范,使控件自动生成统一、规范的界面。同时,为自定义控件开发一个用户界面自定义功能,使用户能够自定义控件界面属性,以增强软件易用性。

1 WinForm界面统一管理

在软件开发中,WinForm控件的统一优化管理分为两大类:①用户按需求自定义修改;②程序员开发时通过自定义控件规范控件各种属性。其中,用户自定义修改可使用户根据需求,给相应控件添加备注来自定义程序的用户界面。同时,针对现有程序中同一类型控件名称不统一的问题,用户可以通过自定义控件属性进行手动修改,既满足了用户需求,又实现了控件属性的统一化。通过自定义控件来规范控件名称则是在系统初始阶段就进行统一化的管理。图1为系统界面统一管理的两个流程[4]。

1.1 软件界面统一管理

在WinForm开发中,Visual Studio虽然自带大量控件,这些控件使用灵活、简单,但只依靠这些控件无法满足用户的各种界面需求,而自定义控件能够使程序员在开发中定义一些满足自己需要的特殊控件。这些控件可以在原控件基础上重新定义一些属性,以满足特殊的功能需求。在WinForm界面的统一管理与优化过程中,为了保持控件运行时界面风格的一致性,通过修改自定义控件中的AutoId值来自动查询控件属性数据库,并获得控件所有属性。操作流程如图2所示。

在数据库中,不同的AutoId表示不同类型的自定义控件,通过AutoId与窗体上的自定义控件相关联,从而为这些控件提供统一的界面属性标准。表1为控件属性数据表结构。endprint

1.1.1 自定义控件开发

以DataGridView为例来说明自定义控件开发过程。该控件需要修改每列的列名:HeaderText。自定义一个名为UDataGridView的控件,该控件在DataGridView的基础上创建一个新的数组属性,数组中的每个元素代表控件中对应的列[5],通过查询数据库自动获取每一列对应的HeaderText属性值。其基本过程如下:

(1)创建自定义控件,并将自定义控件命名为UDataGridView,该控件的创建是为了代替DataGridView。因此,该控件继承了DataGridView类。

(2)定义一个新的属性,命名为AutoId。

private string[] autoId=new string[10];

public string[] AutoId {

get

{

return autoId;

}

set

{

if (autoId != null)

{

autoId = value;

OnIdChanged(this, new EventArgs());

}

}

}

(3)定义一个事件,在事件中使控件HeaderText的值根据AutoId的变量进行变更。

private void UDataGridView_OnIdChanged(object sender, EventArgs e)

{

try

{

for (inti = 0; i

{

DataGridViewTextBoxColumn c1 = new DataGridViewTextBoxColumn();

this.Columns.Insert(i,c1);

this.Columns[i].HeaderText =Name[i];

}

}catch (Exception ex)

{

throw new Exception("标签自动赋值失败!\\n" +

ex.Message);

}

}

(4)在控件初始化事件中绑定该事件。

(5)由于控件本身自带某些事件,因此其它事件可以通过重写的方法实现,如:因text值更改而改变控件的宽度,可以重写OnTextChanged(EventArgs e)方法。

1.1.2 自定义控件使用效果

在自定义控件代码编写完成后,进行重新编译,在工具箱中找到自定义控件,如图3所示。点击UDataGridView按钮移动至Form界面,在UDataGridView属性列中可以查看定义的属性AutoId,如图4所示。因为AutoId是一个数组形式,在赋值时,点击AutoId赋值按钮,弹出赋值界面,根据操作指南在赋值界面中输入cid、age、name,控件会根据这3个字段依次查询数据库,获取数据库信息,创建UDataGridView控件的属性列,并根据数据库信息,给相应的属性列赋值。

1.2 用户自定义界面

1.2.1 自定义界面设计与开发

通过自定义控件在软件开发阶段实现了命名方式和控件界面的一致性。但是,用户对于数据库中的控件规范化管理规则可能不太满意,希望能够自定义界面,以满足自身需求。为此,本文开发了用户自定义界面功能,其流程如下:①用户右击需要进行界面自定义的控件;②点击修改样式,弹出修改样式界面,用户可在界面中修改控件颜色、内容、字体等属性;③在相应的文本框中填写需要修改的样式,并将修改后的结果存入数据库中;④自动修改相应控件的各类属性;⑤当用户对自身设计的控件属性不满意时,在样式修改界面中点击还原按钮,控件将还原成初始状态。

在WinForm需要通過事件来触发功能调用,若每修改一个控件属性就要编写一个点击事件跳转到用户自定义界面,则会大大增加工作难度。因此,将跳转界面写到函数中,在Form加载时遍历所有控件,自动为每个控件添加自定义界面事件,并通过参数调用函数。

1.2.2 数据库设计

自定义界面数据库如表2所示,由于不同用户对同一界面有不同的自定义需求。因此,表2加入了用户信息。

1.2.3 界面初始化

由上文可知,在用户修改界面之后,会将修改控件的信息存入数据库。因此,在每一个窗体界面启动过程中,需要将已被用户修改的控件重新赋值。这里使用遍历控件的方法来修改控件属性,但是对于一些特殊的组合控件,用户修改的是组合控件内部的控件,仅仅通过遍历的方式无法获得界面中的所有控件。因此,在系统遍历之前需要将所有组合控件存入数据库,具体操作流程如下:①遍历空间中的所有组合控件,将组合控件存入数据库中;②系统启动时,遍历所有控件,并查询数据库,若为数据库中的组合控件,遍历组合控件中的所有控件。将所有控件存入D={D1,…Dn}中;③查询数据库,若Di在数据库中,依照数据库修改控件Di的所有属性。

2 结语

在WinForm界面统一化管理方法中,采用用户界面自定义和软件界面统一管理两种方法可以使软件在开发和运行过程中保持控件风格统一、命名方式规范。但系统还存在一些问题,由于系统每次运行时,都需要遍历系统中的所有控件,当控件数量很多时,系统将耗费一部分额外时间去处理,导致系统运行效率降低。为了改善这一问题,下一阶段将重点研究如何在现有的管理方法中进一步提高软件运行效率。同时,自定义控件的开发规则依赖于数据库中存放控件的开发规则,这些开发规则目前需要手动录入,因此控件规则的维护和完善仍然需要花费大量时间。

参考文献:

[1] JOHNSHARP,夏普,周靖.Visual C# 2005从入门到精通[M].北京:清华大学出版社,2006.

[2] 刘辉,常婉纶.基于C#的Winform程序参数传递和同步显示的实现[J].现代电子技术,2010,33(14):64-66.

[3] 白雪冰.分析C#程序设计语言中参数的传递[J].电脑知识与技术:学术交流,2007,3(8):749-750.

[4] 王海群.大型超市商店形象对顾客满意与忠诚的影响研究[D].杭州:浙江大学,2006.

[5] 陈锋文,周军建.基于C#的学生成绩管理系统的研究[J].软件导刊,2012,11(1):33-34.

(责任编辑:黄 健)endprint