界面设计模块一、界面设计模块:本章讲解界面的设计方法以及基本的界面创建方法,如果需要创建类似的界面,可以在这些基础之上进行修改。
用户界面是一个应用程序最重要的部分,对用户而言,界面就是应用程序,他们感觉不到幕后正在执行的代码。
无论花多少时间和精力来编制和优化代码、代码编写得如何出色、运行性能如何高,用户总是要与应用程序界面进行交互操作,而不是与代码进行交互操作,应用程序的可用性在很大程序上仍然依赖于界面的好坏。
因此,界面设计是软件设计的一个重要方面。
1、界面设计原则在设计应用程序用户界面的过程中,需要时时想到用户。
一般需要遵守一下原则:(1)界面设计初步规划:设计一个应用程序界面时,应该先对整个系统界面进行初步规划。
考虑应该使用单文档还是多文档样式,需要多少个不同的窗体,菜单中将包含什么命令,要不要使用工具栏重复菜单的功能,提供什么对话框与用户交互,需要提供什么样的帮助。
(2)符合Windows界面准则:随着Windows操作系统的使用用户的增加,用户更容易接受基于Windwos的应用程序。
如果创建的界面与此相差太远的话,不容易让人接受。
比如菜单的设计,大多数基于Windows的应用程序都遵循这样的标准,即“文件”菜单在最左边,然后是“编辑”、“工具”等可选菜单,最右边是“帮助”菜单。
如果把“帮助”菜单放在最前面,便会降低应用程序的可用性。
子菜单的位置也很重要,用户本期望在“编辑”菜单下找到“复制”、“剪贴”与“粘贴”等子菜单,若将它们移到“文件”菜单下会使用户不可理解。
(3)使用颜色:一般来说,最好采用一些柔和的、中性化的颜色。
(4)选取字体:一般来说,使用标准的Windows字体,如Arial、New Times Roman、System 等。
如果用户的系统没有包含指定的字体,系统会使用替代的字体,其效果可能与设想的完全不一样。
大多数情况下,不应当在应用程序中使用两种以上的字体。
注意不要在应用程序中使用太多的字体,也不要设置太小的字体,以免影响用户阅读。
(5)合理的控件布局,保持界面的简明2、初始屏幕窗体设计初始屏幕又称为Splash窗体。
Splash窗体的主要作用如下:◆用户可以确定应用程序已经启动。
◆显示一些该应用程序的基本信息。
◆应用程序初始化。
设计中,必须保证Splash窗体在所有窗体的前面。
在程序启动过程中显示Splash窗体,在应用程序初使化成功后自动关闭。
设计Splash窗体最简单的方法就是使用Visual Basic2005中的Splash窗体模板。
方法提示如下:①如何添加:“项目”菜单-->”添加Windows窗体”-->选择“初始屏幕”②个性化设置:●BackgroudImage属性、BackgroudImageLayout属性更改其图片和图片的排列方式●打开项目的属性页,在“应用程序”选项卡中,设置“初始屏幕(L)”一栏,并修改”程序集信息(Y)”的内容。
●还可适当调整标题和版权信息的位置,使其分布合理。
3、MDI窗体设计多文档界面(Multiple Document Interface)的含义就是创建在单个容器窗体中的多文档界面。
MDI应用程序允许用户同时显示多个文档,每个文档显示在它自己的窗口中。
文档或子窗体被包含在父窗口中,父窗口为应用程序中的所有子窗体提供工作空间。
让用户随意在各个文档间来回切换进行数据剪切及连接工作。
为了更好地理解多文档界面,可以比对以下两个界面。
记事本为单文档界面。
Microsoft Excel为多文档界面。
3.1创建MDI窗体①新建一个Windows应用程序,设置Form1的IsMDICondtainer属性为True,这就指定了该窗体为其他子窗体的容器。
注意,也常将Form1的WindowState属性设置为Maxmized,因为当父窗体最大化时操作子窗体最为容易。
②添加一个窗体,命名为childfrom。
为了在父窗体中将一个窗体以子窗体的方式打开,需要把子窗体的MDIParent属性设为父窗体。
在Form1中使用下列代码来显示其中的子窗体:Private Sub Form1_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.LoadDim childfrom1As New childformDim childfrom2As New childformchildfrom1.MdiParent=Me'为了在父窗体中将一个窗体以子窗体的方式打开,需要把子窗体的MDIParent属性设为父窗体。
childfrom1.Text="第一个子窗体"childfrom1.Show()'显示第一个子窗体childfrom2.MdiParent=Mechildfrom2.Text="第二个子窗体"childfrom2.Show()End Sub③运行这个程序的结果如下图所示。
它由父窗体From1和两个childfrom子窗体组成。
无论如何改变子窗体childfrom的大小,它永远位于父窗体Form1的工作空间内。
3.2窗口切换为了提供一个用于列出父窗口中所有可用子窗口的菜单项,应给Form1增加一个新的Menustrip控件。
创建一个菜单项(名称为“窗口”),并设置它的MDIWindowListItem属性。
这样,子窗体的名称就会自动显示在“窗口”菜单项中。
当用户选择其中的某个菜单项时,会在子窗口之间进行切换;当从父窗体中增加和删除子窗体时,菜单项会自动更新。
运行结果如下图所示:3.3窗口排列通过合并使用LayoutMDI方法和MDILayout枚举来重新排列多文档界面父窗体中的子窗体。
LayoutMDI方法可使用4个不同MDILayout枚举值中的一个。
这些枚举值将子窗体显示为层叠、水平平铺、垂直平铺或显示为排列在MDI窗体下部的子窗体图标。
MDILayout枚举值如下表所示:成员名称说明ArrangeIcons所有MDI子图标均排列在MDI父窗体的工作区内。
Cascade所有MDI子窗口均层叠在MDI父窗体的工作区内TileHorizontal所有MDI子窗口均水平平铺在MDI父窗体的工作区内。
TileVertical所有MDI子窗口均垂直平铺在MDI父窗体的工作区内。
代码如下:Private Sub平铺ToolStripMenuItem_Click(ByVal sender As System.Object,ByVal e As System.EventArgs)Handles平铺ToolStripMenuItem.ClickLayoutMdi(MdiLayout.TileHorizontal)'平铺End SubPrivate Sub纵铺ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles纵铺ToolStripMenuItem.ClickLayoutMdi(MdiLayout.TileVertical)'纵铺End SubPrivate Sub层叠ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles层叠ToolStripMenuItem.ClickLayoutMdi(MdiLayout.Cascade)'层叠End SubPrivate Sub排列ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles排列ToolStripMenuItem.ClickLayoutMdi(MdiLayout.ArrangeIcons)'排列End Sub4、菜单设计(MenuStrip)菜单项一般有3种状态:正常、隐藏和禁用。
大多数菜单项属于“正常”状态,出现在菜单栏或菜单的下栏列表中。
“隐藏”菜单是在运行时不出现在菜单栏或下拉列表中的菜单项,“禁用”菜单是在运行时呈灰色显示的菜单项,它表示当前的菜单项不能执行。
4.1添加菜单和菜单项①新建一个Windows应用程序,向窗体添加一个MenuStrip控件和TextBox控件,将TextBox 控件的Multiline属性设置为True(Multiline属性控制控件的文本是否能够跨越多行),界面设计如下图所示:②创建下面的代码,实现“剪切”、“复制”、“粘贴”的功能。
代码如下:Private Sub剪切ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles剪切ToolStripMenuItem.ClickTextBox1.Cut()End SubPrivate Sub复制ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles复制ToolStripMenuItem.ClickTextBox1.Copy()End SubPrivate Sub粘贴ToolStripMenuItem_Click(ByVal sender As System.Object,ByVale As System.EventArgs)Handles粘贴ToolStripMenuItem.ClickTextBox1.Paste()End Sub4.2隐藏菜单通常,当菜单项上所有菜单项都不可用时,最好隐藏整个菜单。
这能减少对用户的干扰。
而且,必须隐藏并且禁用菜单,因为仅靠隐藏无法防止通过快捷键访问菜单命令。
在窗体中选定菜单项,经其Visible属性设置为False。
当隐藏给定菜单中的顶级菜单项(其Visible属性设置为False时),将隐藏该菜单内的所有菜单项。
现在,把“文件”菜单的Visible 属性设置为False。
按F5键运行该程序,结果发现,窗体中没有显示出“文件”菜单,它被隐藏了。
4.3禁用菜单要禁用某个菜单,只需把它的Enabled属性设置为False就可以了。
4.4菜单分组在菜单系统中,通过分割线将菜单项分组,把功能相近的菜单命令放在一起。
为了添加分割线,需要在设置菜单项的Text属性时,输入短划线(-),是该菜单项称为分割线。