VB 程序设计

10个成员

Visual Basic界面设计大观

发表于 2016-12-26 2982 次查看
  一 前言

  用户界面是一个应用程序最重要的部分,对用户而言,界面就是应用程序,他们感觉不到幕后正在执行的代码。不论花多少时间和精力来编制和优化代码,应用程序的可用性仍然在很大程度上依赖于界面的好坏。第一步就设计出非常完美的界面是十分困难的,它需要在用户的参与下进行多次反复。要想设计出让用户满意的界面,首先要知道什么是好的界面,针对自己要开发的应用程序做出初步规划设计。

  二 界面设计初步规划

  设计用户界面之前,最好先参照 Microsoft 或其他公司的一些应用程序。在这个过程中,我们会发现许多通用的东西,比如:工具栏、状态条、工具提示、上下文菜单以及标记对话框。同时也要凭借自己使用软件的经验,想一想曾经使用过的一些界面好的应用程序,哪些可以吸收利用。但要记住个人的喜好不等于用户的喜好,必须把用户的意见和需求吸收近来。众所周知,用户参与设计过程的时间越早,设计人员所花的时间和精力就越少,创建的界面就越好、越实用。

  设计一个应用程序界面时,应该先对整个系统界面进行初步规划。考虑应该使用单文档还是多文档样式?需要多少个不同的窗体?菜单中将包含什么命令?要不要使用工具栏重复菜单的功能?提供什么对话框与用户交互?需要提供什么样的帮助?

  界面设计也需要考虑应用程序的目的是什么、预期的用户是谁等问题。经常使用的应用程序和偶尔使用的辅助程序要区别对待,用来显示信息的应用程序与用来收集信息的应用程序也有应所不同。目标是针对初学者的应用程序,界面设计要求简单明了,而针对有经验用户却可以复杂一些。如果系统计划发布到全球,那么语言和文化也是设计者必须考虑的内容。

  三 界面控件的设计

  确定好整个系统的界面风格以后,就要针对单独的界面进行具体设计。在此过程中要考虑完成系统功能需要用到哪些控件、这些控件之间的关系以及它们的相关性和重要性。

  1 符合Windows 界面准则

  Windows 操作系统的主要的优点就是为所有的应用程序提供了公用的界面。如果用户知道如何使用基于 Windows 的应用程序,就很容易学会使用其他应用程序。而与已创建的界面准则相差太远的应用程序,不容易让人接受。比如菜单的设计,大多数基于 Windows 的应用程序都遵循这样的标准:"文件"菜单在最左边,然后是"编辑"、"工具"等可选的菜单,最右边是"帮助"菜单。如果把"帮助"菜单放在最前,便会降低应用程序的可用性。子菜单的位置也很重要,用户本期望在"编辑"菜单下找到"复制"、"剪切"与"粘贴"等子菜单,若将它们移到"文件"菜单下会引起用户的不可理解。不要偏离已经创建的准则太远,除非有很好的理由这样做。

  2 确定控件的位置

  在大多数界面设计中,不是所有的界面元素都一样重要。仔细斟酌是很有必要的,以确保越是重要的元素越要快速地显现给用户。重要的或者频繁访问的元素应当放在显著的位置上,而不太重要的元素就应当降级到不太显著的位置上。一般情况下,用户的眼睛会首先注视屏幕的左上部位,所以最重要的元素应当放在屏幕的左上部位。例如,如果窗体上的信息与客户有关,则它的名字字段应当显示在它能最先被看到的地方。而按钮,如"确定"或"下一个",应当放置在屏幕的右下部位,用户在未完成对窗体的操作之前,通常不会访问这些按钮。

  把控件分成组也很重要,尽量按功能或逻辑关系进行分组。例如对数据库操作的按钮应当被形象地分成一组,而不是分散在窗体的四处,因为它们的功能彼此相关。在许多情况下,可以使用框架控件来帮助加强控件之间的这种联系。

  3 保证界面元素的一致性

  在用户界面设计中,一致的外观可以在应用程序中创造一种和谐美。如果界面缺乏一致性,则使应用程序看起来非常混乱、没有条理,降低了人们使用该应用程序的兴趣。

  为了保持视觉上的一致性,在开始开发应用程序之前应先创建整体设计策略。诸如控件的类型、控件的尺寸、分组的标准以及字体的选取等设计元素都应该在事先确定,可以创建设计样板来帮助进行设计。有时完成一定的功能有许多的控件可供选择使用,设计时应选取能最能适合特定应用程序的控件子集。虽然列表框、组合框、网格以及树等控件都可用来表示信息列表,最好在各个界面上尽可能地使用同一种控件。

  设计过程中要符合通常的约定,恰当地使用控件。虽然 TextBox 控件也可以设置其只读属性来显示文本,但 Label 控件更适合于该目的。在为控件设置属性时也要保持一致,如果在一个地方为可编辑的文本使用白色背景,除非有很好的理由,否则不要在别的地方又使用灰色。窗体的一致性对应用程序的可用性也具有非常重要的作用。如果在一个窗体上使用了灰色背景以及3d/33.shtml' target='_blank' class='article'>三维效果,而在另一个窗体上使用白色背景,则这两个窗体就显得毫不相干。明智的选择是确定一种类型并在整个应用程序保持一致。

  4美化界面和控件

  尽量使用具有三维立体效果的控件,从而使用户界面具有动感。例如,用在命令按钮上的三维立体效果使得它们看上去象是被按下去的。如果设计平面边框的命令按钮的话,就会失去这种动感,因而不能清楚地告诉用户它是一个命令按钮。文本框也提供了一种动感,用户可以期望带有边框和白色背景的框,框中包含可编辑的文本。显示不带边框的文本框 (BorderStyle = 0) 也有可能,这使它看起来更象一个标签,并且不能明显地提示用户它是可编辑的。

  在用户界面中使用空白空间有助于突出元素和改善程序可用性。空白空间是窗体控件之间以及控件四周的空白区域。一个窗体上有太多的控件会导致界面杂乱无章,使得寻找一个字段或者控件非常困难。在设计中需要插入空白空间来突出设计元素。各控件之间一致的间隔以及垂直与水平方向元素的对齐会使用户感觉更好一些。

  在界面上使用颜色会增加用户视觉上的感染力,颜色能够引发人们强烈的情感。每个人对颜色的喜爱有很大的不同,用户的品味也会各不相同。一般说来,最好保守传统,采用一些柔和的、中性化的颜色。有时为了突出或吸引人们对重要区域的注意可以使用少量明亮的色彩。预期的读者以及试图传达的语气与情绪也会影响对颜色的选取,例如明亮的红色、绿色和黄色适用于小孩子使用的应用程序,但在银行应用程序中不一定适合。

  图片与图标的使用也可以增加应用界面在视觉上的趣味。带有表示各种功能的图标的工具栏是一种很有用的界面设备,但如果不能清晰地识别图标所表示的功能,反而会事与愿违。在设计工具栏图标时,应先了解约定成俗的标准。例如,许多应用程序用一张角上有卷边的纸表示"新建文件"图标,若改用其它的表示方法会引起用户的混淆。考虑图象文化上的意义也非常重要,不同的人对相同图象的理解会不一样。同时在设计自己的图标与图象时,应尽量简单化。

  字体也是用户界面的重要部分,因为它们常常给用户传递重要的信息。除非计划按应用程序来配置字体,否则应当坚持使用标准 Windows 字体,如 Arial、New Times Roman 、System等。通常手写字体或者其他装饰性字体的打印效果比屏幕上的效果更好。注意不要在应用程序中使用太多的字体,也不要设置太小的字体,以免影响用户阅读。

  界面设计中也应考虑简单化的原则,从美学的角度来讲,整洁、简单明了的设计更可取。界面设计过程中一个容易犯的错误就是力图用界面来模仿真实世界的对象,这没有必要,对用户也没有真正的意义。最好是设计的界面,既能完成功能、又能让用户感到整洁舒心。

  四 结论

  总之,界面的设计要以用户为中心,应满足用户的需求。在此基础上,还要充分考虑界面的构图或布局,界面元素的位置、界面元素的一致性等问题来美化界面,提高应用程序界面的可用性和美感。

  有时在一个窗口中出现较多的控制件时,如果能向导式地建议用户下一步该做什么,不失为上策。

  在Visual Basic的程序设计中,我们可以使用语句:Object.SetFaocus使我们希望的控件得到输入焦点,举个例子:在Form1中我们加入一个按钮Command1和一个文本输入Text1,双击按钮控件,然后键入如下代码:

  Text1.SetFocus

  再按F5运行程序,您就会看到一单击按钮,文本框会立即取得输入焦点。另外,我们还可以使用语句:Sendkeys "{TAB}"使下一个控件获得焦点,但我们需要在设计时确定各控件的Index值。(在Properties窗口中)让控件自己感知自己的工作已完成,而主动将焦点让出,会使用户觉得应用程序很聪明,也减少了用户出错的机会。

  可是当焦点切换的两个控件相隔有一定距离时,上述的方法有时也不足以引起用户的注意,那么一种好的解决方法是将鼠标箭头也移到控件上。可惜,VB并不支持鼠标移动,那我们就求助API函数,API函数SetCursorPos可让我们如愿。

  下面是子程序MoveCursorOn,它可让鼠标移动到指定控件上方。

  下列代码请放在declarations段中:

  Type PoinTAPIx As Integery As IntegerEnd TypeDeclare Sub SetCursorPos Lib "User"(Byval x As Integer,Byval y As Integer)Declare Sub ClientToScreen Lib "User"(Byval hwnd As Integer,IpPoint As PointAPI)Declare Function GetParent Lib "User"(Byval hwnd As Integer)As Integer

  然后建立一个新的子程序(ALT+N→N→键入子程序名MoveCursorOn),下面是子程序的代码:

  Sub MoveCursorOn(source As Control)Dim Pt As PoinTAPIDim hparent As Integerp.x=(Source.Left+Source.Width/2)/Screen.Twipsperpixel)p.y=(Source.Top+Source.Height/2)/Screen.Twipsperpixel)hparent=GetParent(source.hwnd)ClientToScreen hparent ptSetCursorPos pt.x pt.yEnd Sub

  使用该子程序很容易,例如我们想把鼠标移动到按钮Command1上,就可使用语句Move Cursor On Command1

  您会看到鼠标箭头已经指着按钮Command1。

  需要说明的是,千万不要滥用该子程序。让鼠标自己满屏乱飞,我们的用户会感到失去对应用程序的控制,这是违反我们的初衷的。

  在有数个输入框的窗口中(这在数据库应用程序中是很典型的),当用户完成第一个输入框的输入后,总爱? 性的加一个回车,希望输入焦点落到下一个输入框中(DOS中大多数应用程序是如此),可往往事与愿违,这一回车却触发了拥有Default特性的按钮,结果不是关闭了当前窗口就是又蹦出另一窗口。用户睁大眼睛看着屏幕,“咦?!我到底做了什么?”这是Windows新用户经常遇到的事情。

  解决它其实很容易,只需在输入框的KeyPress事件中加入如下代码:

  IF KeyASCII=13 ThenKeyASCII=0Sendkeys "{TAB}"END IF

  这样,当用户在这个输入框中键入Enter时,就象键入TAB键时,焦点被移到下一控件上。但需注意,这种方法不适用启用多行功能的TextBox,即TextBox的MultiLine特性设为True时,因为这时的回车键是起换行的作用。

 

发表回复
你还没有登录,请先登录注册