vb界面制作

一,概述

GUI(Graphical User Interfaces,图形用户界面,图形用户接口)是相对命令行和文本界面而言的采用图形方式显示的计算机操作环境。在图形用户界面中,计算机画面上显示窗口、图标、按钮等图形表示不同目的的动作,用户通过鼠标等指针设备进行选择。

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

二,发展历史

1980年 Three Rivers公司推出Perq图形工作站,1981年 施乐公司推出了Alto(曾首次使用了窗口设计)的继承者Star,1984年 苹果公司推出Macintosh,1986年 首款用于Unix的窗口系统X Window System发布,1988年 IBM发布OS/2 1.10标准版演示管理器(Presentation Manager),这是第一种支持Intel计算机的稳定的图形界面,1992年 微软公司发布Windows 3.1,增加了多媒体支持

1995年 微软的Windows 95发布,其视窗操作系统的外观基本定型

1996年 微软发布Bob,此软件具有动画助手和有趣的图片。1996年 IBM发布OS/2 Warp 4,它的交互界面得到显着改善,至今仍有不少ATM机运行这样的系统,1997年 KDE和GNOME两大开源桌面项目启动,1997年 苹果公司发布MAC OS 8,这个系统具有三维外观并提供了SpringLoaded Folder功能

2000年 苹果公司漂亮的Aqua,也就是Mac OS X系统的默认外观,可以让用户更轻松地使用计算机

2001年 微软发布Windows XP,实现桌面功能的整合

2003年 Mac OS X v10.3提供了一键单击访问任何已打开窗口的功能,2003年 Sun公司的Java桌面系统为GNOME桌面添加了和Mac类似的效果

三,界面组成

1,桌面 : 在启动时显示,也是界面中最底层,有时也指代包括窗口、文件浏览器在内的“桌面环境”。在桌面上由于可以重叠显示窗口,因此可以实现多任务化。一般的界面中,桌面上放有各种应用程序和数据的图标,用户可以依此开始工作。桌面与既存的文件夹构成里面相违背,所以要以特殊位置的文件夹的参照形式来定义内容。比如在微软公司的Windows XP系统中,各种用户的桌面内容实际保存在系统盘(默认为C盘):\Documents and Settings\[用户名]\桌面 文件夹里。 墙纸,即桌面背景。可以设置为各种图片和各种附件,成为视觉美观的重要因素之一。

2,视窗: 应用程序为使用数据而在图形用户界面中设置的基本单元。应用程序和数据在窗口内实现一体化。在窗口中,用户可以在窗口中操作应用程序,进行数据的管理、生成和编辑。通常在窗口四周设有菜单、图标,数据放在中央。

在窗口中,根据各种数据/应用程序的内容设有标题栏,一般放在窗口的最上方,并在其中设有最大化、最小化(隐藏窗口,并非消除数据)、最前面、缩进(仅显示标题栏)等动作按钮,可以简单地对窗口进行操作。

单一文件界面(Single Document Interface): 在窗口中,一个数据在一个窗口内完成的方式。在这种情况下,数据和显示窗口的数量是一样的。若要在其他应用程序的窗口使用数据,将相应生成新的窗口。因此窗口数量多,管理复杂。

多文件界面(Multiple Document Interface): 在一个窗口之内进行多个数据管理的方式。这种情况下,窗口的管理简单化,但是操作变为双重管理。

标签 : 多文件界面的数据管理方式中使用的一种界面,将数据的标题在窗口中并排,通过选择标签标题显示必要的数据,这样使得接入数据方式变得更为便捷。

上述中,多文件界面主要是微软视窗系统采用。而在其他环境中,通常多是单文件界面,所以无所谓单一/多文件界面的称呼问题。

3,菜单 将系统可以执行的命令以阶层的方式显示出来的一个界面。一般置于画面的最上方或者最下方,应用程序能使用的所有命令几乎全部都能放入。重要程度一般是从左到右,越往右重要度越低。命定的层次根据应用程序的不同而不同,一般重视文件的操作、编辑功能,因此放在最左边,然后往右有各种设置等操作,最右边往往设有帮助。一般使用鼠标的第一按钮进行操作。 即时菜单

与应用程序准备好的层次菜单不同,在菜单栏以外的地方,通过鼠标的第二按钮调出的菜单称为“即时菜单”。根据调出位置的不同,菜单内容即时变化,列出所指示的对象目前可以进行的操作。

4,图标: 显示在管理数据的应用程序中的数据,或者显示应用程序本身。 数据管理程序,即在文件夹中用户数据的管理、进行特定数据管理的程序的情况下,数据通过图标显示出来。通常情况下显示的是数据的内容或者与数据相关联的应用程序的图案。另外,点击数据的图标,一般可以之间完成启动相关应用程序以后再显示数据本身这两个步骤的工作。 应用程序的图标只能用于启动应用程序。

5,按钮: 菜单中,利用程度高的命令用图形表示出来,配置在应用程序中,成为按钮。 应用程序中的按钮,通常可以代替菜单。一些使用程度高的命令,不必通过菜单一层层翻动才能调出,极大提高了工作效率。但是,各种用户使用的命令频率是不一样的,因此这种配置一般都是可以由用户自定义编辑。

6,回收站: 为了实现文件删除的“假安全“功能而设置了”回收站“(垃圾桶)功能。在文件删除的时候,暂时将其移动到系统特定的地方,一旦用户发现删除错误,还可以将其找回,从而实现防止错误删除的目的。在麦金塔系统中,垃圾桶不仅可以删除文件,还可以进行各种各样对象的删除功能,如将可移动硬盘从系统中移出,将光盘从光驱中取出等等。

7,应用程序启动器 从图形界面上启动应用程序有很多方式,有好几种操作系统都采用菜单形式的程序启动器。NEXTSTEP和Mac OS X中有一种称为dock的操作面板型的工具,可以存放各种文件和应用程序的信息,并通过鼠标点击调出。

四,图形用户界面的任务管理

在图形用户界面中,用户操作是以窗口为单位的。除了MDI和Mac OS以外,大多都是“窗口数量=任务数量”。因此在看整体界面的时候,怎样进行任务管理是很重要的。Windows等操作系统中,最常用的方式是在桌面上设置一个棒状的”任务栏“,放置各种窗口的图标和标题,确保系统的可操作性和可视性,方便对窗口进行管理。其他的方法包括,在桌面上的菜单中添加各个窗口管理菜单,在桌面上显示任务的图标,用虚拟桌面的方式表面增加桌面的数量等等。在Mac OS X系统中使用Dock进行任务管理,但是还有Exposé进行窗口一览显示模式的功能。

1,指针设备的操作: 图形用户界面的基本操作是,用指针设备(一般是鼠标)进行指示操作,然后使用设备上的按钮(通常为两到三个)进行动作的激活。因此”位置“和”指示“都非常明了,从而实现可视操作。

指示的内容根据位置而不同。在数据管理应用程序中,第一按钮进行指针所在位置数据的选择,而两次连续按钮(所谓“双击”)可以调出预制的应用程序开始处理数据。 第二按钮通常用来显示即时菜单。第二按钮调出的菜单可以再用第一按钮进行选择打操作。第三按钮在X Window System中比较常用。

另外,最近四键、五键鼠标相继问世,各个按钮可以在操作系统中进行动作定义。

2,图形用户界面与键盘: 和命令用户界面一样,键盘在图形用户界面仍是一个重要的设备。键盘不仅可以输入数据的内容,而且可以通过各种预先设置的”快捷键“等键盘组合进行命令操作达到和菜单操作一样的效果,并极大提高工作效率。

3,图形用户界面与各种设备: 除了上述的设备以外,手写板等操作,特别是在图像数据操作中也扮演重要的角色。

4,触摸屏图形用户界面: 现在还有很多一些用户界面,直接用手指、或者特殊的笔端触摸触摸屏上显示的按钮、图标进行各种操作,已经非常普及,如自动取款机ATM,汽车导航、媒体播放器、游戏机等等,一般操作简捷,直观。苹果公司的iPhone手机还有装有多手指操作系统。

5, 3D用户界面

五,界面设计初步规划

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

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

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

六,具体界面控件设计

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

1 符合Windows 界面准则

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

2 确定控件的位置

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

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

3 保证界面元素的一致性

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

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

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

4,美化界面和控件

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

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

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

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

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

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

界面设计步骤

一个通用消费类软件界面的设计大体可分为五个步骤:

1需求阶段:软件产品依然属于工业产品的范畴。依然离不开3W的考虑(Who,where,why.)也就是使用者,使用环境,使用方式的需求分析。所以在设计一个软件产品之前我们应该明确什么人用(用户的年龄,性别,爱好,收入,教育程度等)。什么地方用(在办公室/家庭/厂房车间/公共场所)。如何用(鼠标键盘/ 遥控器/触摸屏)。上面的任何一个元素改变结果都会有相应的改变。

除此之外在需求阶段同类竞争产品也是我们必须了解的。同类产品比我们提前问世,我们要比他作的更好才有存在的价值。那么单纯的从界面美学考虑说哪个好哪个不好是没有一个很客观的评价标准的。我们只能说哪个更合适,更合适于我们的最终用户的就是最好的。如何判定最合适于用户呢,后面我会介绍用户调研。

2分析设计阶段:通过分析上面的需求,我们进入设计阶段。也就是方案形成阶段。我们设计出几套不同风格的界面用于被选。首先我们应该制作一个体现用户定位的词语坐标。例如我们为25岁左右的白领男性制作家居娱乐软件。对于这类用户我们分析得到的词汇有:品质,精美,高档,高雅,男性,时尚,cool,,个性,亲和,放松等。分析这些词汇的时候我们会发现有些词是绝对必须体现的,例如:品质,精美,高档,时尚。但有些词是相互矛盾的,必须放弃一些,例如:亲和,放松与 cool,个性与等。所以我们画出一个坐标,上面是我们必须用的品质,精美,高档,时尚。左边是贴近用户心理的词汇:亲和,放松,人性化。右边是体现用户外在形象的词汇:cool,个性,工业化。然后我们开始搜集相呼应的图片,放在坐标的不同点上。这样根据不同作标点的风格,我们设计出数套不同风格的界面。

3调研验证阶段:几套风格必须保证在同等的设计制作水平上,不能明显看出差异,这样才能得到用户客观的反馈。

测试阶段开始前我们应该对测试的具体细节进行清楚的分析描述。例如:     数据收集方式:厅堂测试/模拟家居/办公室。     测试时间:X年X月X日X日。     测试区域:北京、广州、天津。     测试对象。某消费软件界定市场用户。主要特征为:    对电脑的硬件配置以及相关的性能指标比较了解,电脑应用水平较高;    电脑使用经历一年以上;    家庭购买电脑时品牌和机型的主要决策者    年龄:X-X岁;    年龄在X岁以上的被访者文化程度为大专及以上;    个人月收入X以上或家庭月收入X元及以上;    样品    五套软件界面    样本量:X个,实际完成X个。

调研阶段需要从以下几个问题出发:  用户对各套方案的第一印象  用户对各套方案的综合印象  用户对各套方案的单独评价  选出最喜欢的  选出其次喜欢的  对各方案的色彩,文字,图形等分别打分。  结论出来以后请所有用户说出最受欢迎方案的优缺点。   所有这些都需要用图形表达出来,直观科学。

4方案改进阶段:经过用户调研,我们得到目标用户最喜欢的方案。而且了解到用户为什么喜欢,还有什么遗憾等,这样我们就可以进行下一步修改了。这时候我们可以把精力投入到一个方案上(这里指不能换皮肤的应用软件或游戏的界面)将方案做到细致精美。

5用户验证反馈阶段:改正以后的方案,我们可以将他推向市场。但是设计并没有结束。我们还需要用户反馈,好的设计师应该在产品上市以后去站柜台。零距离接触最终用户,看看用户真正使用时的感想。为以后的升级版本积累经验资料。

经过上面设计过程的描述,大家可以清楚的发现,界面UI设计是一个非常科学的推导公式,他有设计师对艺术的理解感悟,但绝对不是仅仅表现设计师个人的绘画。所以我们一再强调这个工作过程是设计过程。UI界面设计不存在美工。

七,VB界面设计

Visual Basic通过在窗体上拖曳控件的方式为创建用户界面提供了非常简便的方法

第一、控件的位置应妥当安排。

第二、控件的大小与一致性编排。

第三、合理利用空间,保持界面的简洁。

第四、合理利用颜色、图像和显示效果来达成内容与形式的统一。

技巧一:椭圆形的窗体 (此项技巧在Form1窗体得以体现)

技巧二:Visual Basic 窗体背景花纹的实现 (此项技巧在所有窗体均得以体现)

技巧三:VB实现按钮浮动效果 (此项技巧在Form1窗体得以体现)

技巧四:用VB实现全屏幕图形界面及动态功能提示

技巧五:制作渐变的窗口背景色

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

在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 Integer End 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 Integer p.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.y End 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时,因为这时的回车键是起换行的作用。

MDI(MultipleDocumentInterface,多窗口程序)窗体是这样定义的:“MDI窗体作为一个程序的后台窗口,包含着MDIChild属性为True的窗体”。在一个VB程序中,至多只能存在一个MDI父窗体,可以有多个MDI子窗体;建立一个MDI父窗体的方法是在VB的File菜单里选择“NewMDIForm”。

在MDI程序运行时,如果子窗口具有菜单,那么当子窗口被激活时,子窗口的菜单就会自动替换父窗口菜单;当子窗口被最小化时,在MDI父窗口里就会出现子窗口的图标。

Windows的通用图形界面的出现,使计算机用户不必通过专门的学习就可以得心应手地使用各种Windows的软件;不仅如此,它还是程序设计者在设计Windows程序的界面时所必须遵循的标准,这在很大程度上减轻了程序设计者的负担,使他们能够把主要精力放在问题的求解和实现上。

VisualBasic的出现,更加简化了Windows程序界面的设计工作,只需要极少量的代码,就能实现标准Windows应用程序的界面。但是,如果不了解Windows程序界面设计的原则,或者不熟悉VB下界面编程的技巧,就难以设计和实现既符合一般标准又具有特色的界面。界面设计的原则界面设计具有一般性的原则,最为重要的有:

界面要具有一致性。一致性原则在界面设计中最容易被违反,同时也最容易修改和避免。例如,在菜单和联机帮助中必须使用相同的术语;对话框必须具有相同的风格。

常用操作要有捷径。常用操作的使用频度大,应该减少操作序列的长度。例如,为文件的常用操作如打开、存盘、另存等设置快捷键。使常用操作具有捷径,不仅会提高用户的工作效率,还使得界面在功能实现上简洁和高效。

提供简单的错误处理。系统要有错误处理的功能。在出现错误时,系统应该能检测出错误,并且提供简单和容易理解的错误处理的功能。错误出现后系统的状态不发生变化,或者系统要提供错误恢复的指导。

提供信息反馈。对操作人员的重要操作要有信息反馈。对常用操作和简单操作的反馈可以不作要求,但是对不常用操作和至关重要的操作,系统应该提供信息的反馈。

操作可逆。操作应该可逆。这对于不具备专门的知识的操作人员相当有用。可逆的动作可以是单个的操作,或是者一个相对独立的操作序列。

设计良好的联机帮助。虽然对于熟练用户来说,联机帮助并非必不可少,但是对于大多数不熟练用户来说,联机帮助具有非常重要的作用。

菜单设计的原则和编程

菜单设? 如下的一般性原则:

按照系统的功能来组织菜单。

要选用广而浅的菜单树,而不是窄而深的菜单树。

根据菜单选项的含义进行分组;并且按一定的规则排序。菜单选项的标题要力求简短、含义明确,并且最好以关键词开始。

常用选项要设置快捷键。结合以上的原则,菜单编程有以下几方面的技术和技巧:

菜单选项的分组

在VB中,菜单选项的分组是通过菜单栏分隔横线实现的。在菜单的一定位置增加一个Caption属性为“?”的菜单项,它在菜单上就表现为一条横线。在许多情况下,同一个功能菜单下又可以按照菜单选项的功能分为几组,这时就可以用分隔横线来实现菜单项的分组。 常用选项快捷键的设置

打开菜单设计窗口(MenuDesignWindow),应对于每个菜单选项有相应的快捷键(Shortcut)列表,在该表中选择一个即可。需要注意的是,具有子菜单的菜单或者顶层菜单的快捷键不能这样定义。按照Windows的界面设计原则,顶层菜单的快捷键的形式是Alt+字母键。它的实现方法在后文另叙。

对于一些常用的功能菜单项,有约定俗成的快捷键。例如,文件打开用CTRL+O,文件存盘用CRTL+S,打印用CTRL+P,等取?/p>

为菜单选项定义好快捷键之后,菜单上该选项的后面就出现了快捷键的文字表示。

菜单选项的使能与禁止、可见与隐藏为了表示菜单选项的一些特殊功能,可能要用到菜单选项的使能与禁止、可见与隐藏属性。当因为某种原因使得某个选项所代表的功能不能被实现时,就应该禁止该选项被选中。菜单选项的使能与禁止是通过改变改选项的Enabled属性实现的。举例来说,假设菜单选项名为nmuName,则禁止该选项可以如下实现:

mnuName.Enabled=False

同理,隐藏一个选项可以用 mnuName.Visible=False 来实现,而使一个隐藏的选项恢复可见则用 mnuName.Visible=True 实现。

菜单项的隐藏与恢复可见常常用在动态菜单的实现中。

菜单项的动态装入

菜单项的动态装入是指菜单项的个数不固定,并且能够在需要时动态地装入。最简单的例子就是文件菜单中最近打开的文件的列表。在第一次打开文件之前,该列表是空的,并且不在文件菜单中出现;打开一个文件后,该列表不再是空的,并且文件菜单中出现代表被打开文件的菜单项。

在上面的例子里,就综合运用了菜单项的下标属性(Index)、标题属性(Caption)、可见属性(Visible)以及菜单项的装入方法(LoadMethod)。

具体的实现过程如下:

在文件菜单里增加一个菜单项,标题任意,并假设菜单项的Name属性是opened_files_list;

更改菜单项opened_files_list的可见属性,使opened_files_list.Visible=False

更改菜单项opened_files_list的下标属性,使 opened_files_files_list.Index=0

在程序中控制菜单项opened_files_list的动态装入。

假设要显示打开过的第二文件的文件名,并且该文件名存放在一个文件名数组opened_file_name里。以下的代码就实现了这一功能:

Loadopened_files_list(1) opened_files_lise(1).Caption="&2"+opened_file_name(1) opened_files_list(1).Visible=True

需要注意的是,对于下标为0的菜单项,不能用Load方法。因为在程序执行时,该菜单项就已经被装入到内存里了;另外,在菜单项的标题属性字符里的“&”字符具有特殊的含义,它的作用是在显示该属性字符串的同时,并不显示“&”本身,而紧跟“&”的字符在显示时具有下划线,并且该字符成为热键。

如果下标不为0的菜单项不再需要,为了减少对内存资源的占用,可以用Unload方法把它从内存卸出;同样地,不能用Unload卸出下标为0的菜单项。

弹出式菜单的实现(PopupMenuMethod)

VB中在菜单设计窗口(MenuDesignWindow)中设计的菜单是下拉式菜单。下拉式菜单是用户在任何时候都可以在顶端菜单条上选择后拉出的菜单,而弹出式菜单则是在程序界面的一定区域内点按鼠标键后出现的菜单。在某些情况下,弹出式菜单会使系统功能的实现更加简洁和高效,使用起来更加得心应手。

Widnows程序的弹出式菜单一般是当用户在程序的桌面上点按鼠标键时出现的。弹出式菜单多用于实现系统的附加或增强功能。弹出式菜单的内容,可以随点按鼠标键的位置不同而变化。由于弹出的菜单要覆盖屏幕的一部分,所以应尽量缩短菜单里的文字。

在VB中,弹出式菜单的实现要用到下拉式菜单设计的技术和PopupMenu方法。具体的做法是:

在菜单设计窗口(MenuDesignWindow)里设计好相应窗体的弹出式菜单。要注意的是,要弹出的菜单必须至少有一个子菜单;因而这个菜单不能有快捷键,并且Checked属性必须是False。再把弹出式菜单的Visible属性改为False。

在具有设计好的弹出式菜单的窗体的Form_Click中加入以下代码(假设弹出式菜单的Name属性是mnuExample):

SubForm_Click() PopupMenumnuExample EndSub

如果要求只有按下鼠标左键或者右键才能激活菜单,就必须在Form_MouseDown里加入如下代码:

SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle) IfButton=2thenButton=2表示鼠标右键 PopupMenumnuExample EndIf

PopupMenu的完整句法是: [Form.]PopupMenumenuname[flags[,x[,y]]]

改变flags的值可以控制弹出式菜单的表现形式。Flags有两组值。第一组值用来控制菜单的显示方式,包括 POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN,POPUPMENU_RIGHTALIGN,分别表示以x为左边界,以x为中心和以x为右边界的显示方式,并且以x为左边界是缺省的方式;另外一组值用来控制菜单项的选中方式,包括 POPUPMENU_LEFTBUTTON和POPUPMENU_RIGHTBUTTON,分别表示左键选中和左/右键选中均可,并且左键选中是缺省的方式。Flags的值由上面的两组值经过OR运算得出。例如,要求左对齐显示并且左键选中为准,则应有:

flags=POPUPMENU_LEFTALIGNORPOPUPMENU_LEFTBUTTON

x和y用来定义菜单弹出的位置、缺省是鼠标点中的位置。

菜单项的其他属性

用ALT+字母键激活顶层菜单,或者在菜单激活后用字母键激活一个菜单项,必须学会使用&。&用在菜单项的标题属性(Caption)里。它的用法和作用与在用C语言编制的Windows程序中的用法和作用相同。

有时希望顶层菜单之间的间隔大一些,或者某个顶层菜单出现在菜单条的最右端,这时就要用到标题属性是空格的菜单。如果一个菜单的标题是由多个空格组成的,那么这个菜单在菜单条上就占用跟空格的个数相应的空间,并且它后面的菜单也顺序地后移;如果这个菜单的Visible属性是False,那么它就跟不存在一样。

窗口设计的原则和举例

下面是一个浮动窗口技术的例子。为了引起用户的注意,或者必须保证含有重要信息的窗口不被其他窗口覆盖,就要用到浮动窗口技术,建立一个“总在最前面”(TopMost)的窗口。具体的做法是:

(1)在VB程序中加入如下的声明:

DeclareFunctionSetWindowPosLib"user"(Byvalh%,Byvalhb%,Byvalx%,Byvaly%,By valcx%,Byvalcy%,Byvalf%)AsInteger GlobalConstSWP_NOMOVE=2 GlobalConstSWP_NOSIZE=1 GlobalConstHWND_TOPMOST=?1 GlobalConstHWND_NOTOPMOST=?2 GlobalConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE

(2)假设要把窗体frmExample设置成总在最前面的窗口,只要在frmExample窗体的Form_Load

过程里加入以下代码:

Dimsuccess%

success=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS)

如果要取消总在最前面的特性,则可以执行如下的代码:

success=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)

success不等于0表示SetWindowPos执行成功。

在MDI程序里,有一个窗口是所有其他窗口的父窗口,各个子窗口完成相对独立的功能,就像是多个独立的工具组合起来一样。在这方面,MSWord和Windows的FileManager是最好的例子。

参见

UI界面设计版

guidebook界面收集站

界面制作大加都用什么工具?【附:各个工具调查】

豪华的界面控件---NiceFormControl

Visual Basic界面设计大观

关于SkinMagic的破解

各种流行的界面换肤控件库比较

关于SkinCrafter破解及使用

VB6 To XAML工具

VB高级界面编程

VB编程之路-如何让界面美化

用户界面设计风格说明