版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 可视化界面设计,8.1 窗体概述 8.2 窗体的属性、事件和方法 8.3 MDI窗体 8.4 特殊窗体,前 言,窗体是可视化应用程序的一个最基本结构,大多数的应用程序都是在窗体的基础上运行的,是其它控件对象的载体,也就是所谓的容器。从 .NET的角度看,窗体是一个最基本的类,从该类上可以继承衍生出许多类,所以窗体是应用程序可视化设计中最重要的部分。 本章主要介绍VB 2005中窗体的概念以及使用,和Windows程序的可视化界面设计。,8.1 窗体概述,现在计算机程序员使用的大多数程序都是在一个或多个窗口中运行,这使程序员能够通过键入、单击按钮、从预设菜单中选择项等各种途经与程序进行交
2、流(或“交互”)。 本节主要介绍VB 2005的窗体的结构特点 。,8.1.1 Windows窗体概述,Windows窗体是UI的基本生成块。程序中的每个窗体都表示一个显示给用户的窗口。在VB的IDE中工作时,窗体是用来设计UI的设计器,与使用Windows的“画图”绘制图片非常相似。 如果从类的本质来讲,窗体也是其它可视化元素继承的基类。窗体是基于.NET框架的,是Windows应用程序的开发平台,它提供了清晰的、面向对象的、可扩展类集,从而简化了Windows应用程序的开发。 设计用户界面时,将控件从“工具箱”中拖放到窗体上,然后将其定位并调整其大小以创建所需的外观。还可以在“属性”窗口中
3、设置窗体和控件的属性,进一步更改外观。,8.1.2 窗体结构,VB 2005中的窗体可以分为标准窗体、对话框和图形程序显示界面几种。其中标准窗体和Windows应用程序中的窗口很相似。 当创建一个项目,选择“项目类型”框中的“Visual Basic”项目的“Windows”选项,在“模板”窗格中选择“Windows应用程序”模板,即创建了一个新项目,该项目默认拥有一个标准窗体对象,即窗体对象Form1。这是一个在设计状态下的标准窗体,也是通常所见到的Windows应用程序所用的最基本的窗体,它一般作为其他可视化元素的最基本容器,使得整个应用程序运行于其上。,Windows标准窗体可以分为两部
4、分: 1. 标题栏 通常,Windows窗体最上方是蓝色的标题栏。标题栏又包括以下几个部分: (1) 窗体图标 (2) 窗体名称 (3) 窗体控制按钮 (4) 窗体边框 (5) 窗体控制菜单 2. 窗体主工作区 Windows窗体灰色的部分是窗体的主工作区。主工作区是整个应用程序的主要部分,可以在主工作区放置各种控件对象,设置大小、颜色等,来影响应用程序的外观。,8.1.3 窗体类,在VB 2005中,类可以定义窗体如何显示以及窗体可以做些什么。 在运行显示窗体时,VB 2005将创建一个Form类的实例。Form类通常表示组成应用程序的用户界面的窗口或对话框,提供将控件组合在一起的功能。 为
5、了解决窗体创建和互相访问的问题,VB 2005引入了My.Forms对象。由于每个窗体都可以随时访问到任何其它的窗体的默认实例,所以这种方式彻底解决了窗体互相访问的问题。如果需要操作窗体本身,必须使用Me关键字。Me关键字提供了一种引用当前正在其中执行代码的类或结构的特定实例的方法。,8.2 窗体的属性、事件和方法,在实例化的过程中,窗体Form继承了窗体类的所有属性、方法和事件。 本节主要介绍VB 2005的Windows窗体常用的属性、事件和方法,以及用户自定义的属性和方法。,8.2.1 窗体的属性,窗体,即Form类,作为应用程序最基本的组成部分,具有许多属性。使用Form类中可用的属性
6、,可以确定所创建窗口或对话框的外观、大小、颜色和窗口管理功能。窗体除了拥有其它控件通用的属性,例如BackColor(背景色)、Font(字体)、ForeColor(前景色)等属性之外,还有一些常用的属性,见表8-1。,8.2.2 窗体的事件,事件是一个信号,它告知应用程序有重要情况发生。本质上事件也是一种函数或过程,只是它需要由来自系统定义的信号去触发。 窗体具有许多事件。在代码编辑窗口中,选择对象列表框“Form1个事件”,再选择事件列表框,将会显示当前窗体的所有事件。如图所示。 选择某一事件,系统会自动在代码编辑主窗体中生成一段程序代码。该程序代码只有对象名、事件名和相关参数,没有事件代
7、码。如图所示。,窗体常用的事件见表。,【例8-1】设计一个应用程序,当程序第一次运行时,窗体显示为蓝色。当鼠标单击窗体,窗体显示为红色。当鼠标双击窗体,窗体显示为黄色。窗体显示在桌面的正中央。 编写事件代码: 窗体Load事件代码 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load Me.BackColor = Color.Blue End Sub 窗体Click事件代码 Private Sub Form1_Click(ByVal sen
8、der As Object, ByVal e As System.EventArgs) _ Handles Me.Click Me.BackColor = Color.Red End Sub 窗体DoubleClick事件代码 Private Sub Form1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) _ Handles Me.DoubleClick Me.BackColor = Color.Yellow End Sub,8.2.3 窗体的方法,窗体除了具有许多事件外,还具有许多方法。方法其实也是一种过程
9、或函数,它由系统定义,由程序员调用。窗体常用的方法见表。,8.2.4 用户自定义窗体方法,定义一个用户自定义方法本质上是声明一个用户自定义过程。调用用户自定义的方法和调用系统定义方法一样,窗体可以直接调用。 【例8-2】现由程序员创建一个用户自定义的名为Create的方法,该方法生成一个背景色为黄色的新窗体。, 创建一个用户定义过程Create Public Sub Create() 声明方法名 Dim newform As New Form With newform .Size = New System.Drawing.Size(300, 300) 设置窗体大小 .Text = 用户自定义方
10、法 设置窗体标题 .BackColor = Color.Gold 设置窗体颜色 End With newform.Show() End Sub 编写命令按钮Click事件代码: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles Button1.Click Me.create() 调用方法 End Sub,8.2.5 程序运行时向窗体添加控件,窗体是Windows应用程序的基本控件,Windows应用程序的运行本质上就是窗体的显示。窗体上可以添加各种控件。
11、窗体上的控件通常都是在程序设计时,通过工具箱添加的。但也可以在窗体运行时添加控件。 在窗体运行时添加控件,其实是创建一个新的对象,在窗体指定位置显示,并将其添加到窗体中。指定位置使用Point对象数组,向窗体添加对象调用Controls属性的Add方法。,8.2.6 使用多个窗体,有的应用程序中,需要使用多个窗体。程序员可以使用“添加新项”对话框,将窗体、类、模块和其他组件添加到当前项目中。每一个窗体在“解决方案资源管理器”窗口中对应一个以.vb为扩展名的窗体文件。程序员还可以通过删除.vb文件删除不需要的窗体。 在多个窗体之间,可以互相操作,传递数据。可以通过直接调用窗体名来操作不同窗体,例
12、如Form1、Form2。也可以使用My.Forms对象来操作不同窗体,例如My.Forms.Form1。,【例8-3】设计一个应用程序,有两个窗体Form1、Form2。当程序运行时,首先加载Form1。当鼠标单击Form1的命令按钮,将Form1中文本框中的文本信息传递到Form2的文本框中。当鼠标单击Form2的命令按钮,将Form2中文本框中的文本信息传递到Form2的文本框中。,编写事件代码。 在Form1中输入以下代码: Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs
13、) _Handles MyBase.Load 使用窗体名直接调用窗体 Form2.Show() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _Handles Button1.Click 使用My.Forms对象来操作窗体 My.Forms.Form2.TextBox2.Text = Me.TextBox1.Text End Sub 在Form2中输入以下代码: Private Sub Button1_Click(ByVal sender As Syst
14、em.Object, ByVal e As System.EventArgs) _Handles Button1.Click 使用My.Forms对象来操作窗体 My.Forms.Form1.TextBox2.Text = Me.TextBox1.Text End Sub,8.2.7 继承窗体,窗体本质上是窗体类,所以窗体也可以继承。在面向对象编程中,继承意味着一个类接收另一个类的对象,包括该对象的属性、方法和其他特征。与复制在本质上不一样,继承是继承一个类的对象全部,复制是一个具体对象的另一个副本。在初始项目中的第1个窗体(Form1)就是依赖于System.Windows.Forms.Fo
15、rm类来确定其定义和初始值的,并在属性窗口中标示出(所有的控件对象都如此)。如图所示。,程序员可以根据已有的窗体生成一个继承窗体,但该项目必须编译过,因为继承只能继承已经编译过的.EXE或.DLL文件的窗体。即创建完应用程序窗体后,一定要全部保存,再选择“生成”菜单的“生成XXX”选项,或选择运行按钮,对应用程序编译,生成.EXE文件。然后选择“项目”菜单的“添加新项”选项,出现“添加新项”对话框。如图所示。,8.2.8 链接标签(LinkLabel)控件,程序员可以通过命令按钮或其它控件来实现多个窗体之间的调用。在VB 2005中,专门提供了一个窗体之间链接的链接标签(LinkLabel)控
16、件来实现各窗体之间的转换。 链接标签控件常用属性见表。,【例8-4】改编【例8-3】,在每个窗体上添加一个帮助链接。 改编【例8-4】程序代码。 Private Sub LinkLabel1_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked Form3.Show() End Sub,8.3 MDI窗体,在Windows应用程序中,窗体界面可以分为3种类型:单文档界面(Sin
17、gle Dobument Interface,简称SDI),多文档界面(Multiple Dobument Interface,简称MDI)和资源管理器样式界面。 本节主要介绍MDI窗体的基本概念和设计。,8.3.1 SDI窗体,SDI窗体指一次只能打开一个文档窗体。新建的Windows应用程序项目,默认都只有一个SDI窗体。一个应用程序中可以包含多个SDI窗体,但这些窗体之间的关系是平等的。例如【例8-4】,每个窗体都是SDI窗体。,8.3.2 MDI窗体,MDI窗体指一个窗体可以同时打开多个文档窗体,这些窗体之间的关系是不平等的,分为主窗体和子窗体。每个文档显示在各自的子窗体中。子窗体的操
18、作与普通SDI窗体一样,但只局限于主窗体内部。 其实准确的来说,VB 2005没有MDI窗体,只要将普通窗体(即SDI窗体)的IsMdiContainer属性设置为True,任何窗体都可以成为MDI窗体中的主窗体。应用程序会在关闭MDI窗体时结束,不管应用程序中是否有非MDI窗体。,1. 创建MDI主窗体 在VB 2005中,新建一个项目,将默认窗体的IsMdiContainer属性设置为True,该窗体即为MDI窗体中的主窗体,并由灰色变为黑色。 MDI主窗体不能更改背景色,也不能显示图片。可以将任何控件添加到MDI窗体,但其行为可能与预期不同。所以通常一个拥有MDI窗体的应用程序中,MDI
19、窗体只拥有菜单、工具栏和状态栏。,2. 创建MDI子窗体 该项目中,所有的窗体包括默认创建的窗体以及新添加的窗体,都默认为SDI窗体。在窗体的属性窗口中将IsMdiContainer属性值设置为True,或在代码编辑窗口中,输入以下代码: SDI窗体名称.IsMdiContainer = True,即可将SDI窗体创建为MDI子窗体。,3. 操作MDI子窗体 在MDI窗体中,可以操作各个子窗体,包括调用MDI子窗体、排列MDI子窗体以及在MDI子窗体之间传递数据。 为了实现子窗体的操作,关键是确定哪个子窗体是当前活动窗体,即获得光标的窗体。若要指定正确的窗体,使用ActiveMdiChild属
20、性,该属性返回具有焦点的或最近活动的子窗体。 排列MDI子窗体,可在MDI父窗体中使用LayoutMdi方法和MdiLayout枚举重新排列子窗体。LayoutMdi方法可以使用不同的MdiLayout枚举值。这些枚举值将子窗体显示为层叠、水平平铺或垂直平铺,或者显示为排列在MDI窗体下部的子窗体图标 。,【例8-5】设计一个类似于Windows操作系统中记事本的简易的文本编辑器。选择文本编辑器的菜单命令,可以打开文本编辑窗口,还可以设置文本编辑窗口的排列。,编写事件代码。 在Form1中输入以下代码: 新建选项 Private Sub NewToolStripMenuItem_Click(B
21、yVal sender As System.Object, _ ByVal e As System.EventArgs) Handles NewToolStripMenuItem.Click Dim newForm As New Form2 newForm.MdiParent = Me newForm.Show() End Sub 关闭选项 Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles ExitToolStripMenuI
22、tem.Click Me.Close() End Sub 层叠选项 Private Sub CascadeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CascadeToolStripMenuItem.Click Me.LayoutMdi(System.Windows.Forms.MdiLayout.Cascade) End Sub, 水平平铺选项 Private Sub HorizonToolStripMenuItem_Click(ByVal sender
23、 As System.Object, _ ByVal e As System.EventArgs) Handles HorizonToolStripMenuItem.Click Me.LayoutMdi(System.Windows.Forms.MdiLayout.TileHorizontal) End Sub 垂直平铺选项 Private Sub VerticalToolStripMenuItem_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles VerticalToolStripMenuI
24、tem.Click Me.LayoutMdi(System.Windows.Forms.MdiLayout.TileVertical) End Sub 在Form2中输入以下代码: Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles MyBase.Load RichTextBox1.Width = Me.Width RichTextBox1.Height = Me.Height End Sub,8.3.3 资源管理器样式界面窗体,除了SDI和MDI窗体之外,Wi
25、ndows应用程序的界面样式还可以是资源管理器样式界面窗体,如同Windows操作系统的资源管理一样,这也是VB 2005的一大优点。 VB 2005提供了分割容器(SplitContainer)控件、列表视图(ListView)控件和树形视图(TreeView)控件的来设计资源管理器样式界面窗体。 (1) SplitContainer控件 (2) ListView控件 (3) TreeView控件,【例8-6】设计一个动物图片浏览器。 首先向窗体添加3个ImageList控件和1个ContextMenuStrip控件。3个ImageList控件分别存储不同种类的图片。ContextMenuS
26、trip控件设置快捷菜单,控制图片显示方式。再向窗体添加1个SplitContainer1控件。系统默认将窗体分为两部分:Panel1和Panel2。将IsSplitterFixed属性设置为True,表示分框不能移动。 添加一个TreeView控件和一个ListView控件,编辑TreeView控件的Node属性,“添加”节点, 设置ListView控件的LargeImageList属性,编辑Items属性,“添加”列表项,并设置ImageIndex属性为ImageList控件中的图片索引。,Private Sub TreeView1_AfterSelect(ByVal sender As
27、System.Object, ByVal e As System.Windows.Forms.TreeViewEventArgs) Handles TreeView1.AfterSelect Dim s As String s = e.Node.Text Select Case s Case Is = 哺乳动物 ListView1.LargeImageList = ImageList1 ListView1.Items.Item(0).Text = 豹子 ListView1.Items.Item(1).Text = 老虎 ListView1.Items.Item(2).Text = 北极熊 Li
28、stView1.Items.Item(3).Text = 狼 ListView1.Items.Item(4).Text = 大象 ListView1.Items.Item(5).Text = 犀牛 Case Is = 鱼类 ListView1.LargeImageList = ImageList3 ListView1.Items.Item(0).Text = 鲨鱼 ListView1.Items.Item(1).Text = 热带鱼 ListView1.Items.Item(2).Text = 金鱼 ListView1.Items.Item(3).Text = ListView1.Items.
29、Item(4).Text = ListView1.Items.Item(5).Text = ,Case Is = 鸟类 ListView1.LargeImageList = ImageList2 ListView1.Items.Item(0).Text = 天鹅 ListView1.Items.Item(1).Text = 猫头鹰 ListView1.Items.Item(2).Text = 翠鸟 ListView1.Items.Item(3).Text = ListView1.Items.Item(4).Text = ListView1.Items.Item(5).Text = End Se
30、lect End Sub 缩略图显示方式 Private Sub LargeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles LargeToolStripMenuItem.Click ListView1.View = View.LargeIcon End Sub 平铺显示方式 Private Sub TileToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.Even
31、tArgs) Handles TileToolStripMenuItem1.Click ListView1.View = View.Tile End Sub, 列表显示方式 Private Sub ListToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListToolStripMenuItem.Click ListView1.View = View.List End Sub 图标显示方式 Private Sub SmallToolStripMenuItem_
32、Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SmallToolStripMenuItem.Click ListView1.View = View.SmallIcon End Sub,8.4 特殊窗体,在绝大多数应用程序中,窗体是应用程序的显示主体,通常在运行时都是以矩形显示。但有的应用程序要求窗体是以特殊形式显示的,例如以圆形显示。 本节主要介绍窗体如何特殊显示。,8.4.1 启动窗体的实现,在许多应用程序的启动时,都有一个标志其软件名称、版权等信息的启动画面等待若干秒后才进入主程序界面。例如OutLook,启动时屏幕中央都有一个小图片,停顿之后才进入主程序,这种显示称为窗体的渐隐显示方式。 窗体的渐隐显示方式可以用记时器控制窗体的透明度,即窗体的Opacity属性来实现。 【例8-7】为一个应用程序添加一个渐隐显示方式的窗体,当渐隐显示完毕显示主窗体。,编写事件代码。 编写计时器Timer1的Tick事件 Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Static s As Single s
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年一级注册建筑师之建筑材料与构造能力提升B卷题库附答案详解(轻巧夺冠)
- 2026年泌尿科医师尿路感染诊断与治疗模拟考试试题及答案解析
- 苏教版一年级数学上册全册教案
- 草莓脱毒种苗繁育操作规程
- 蜂蜜高产养殖技术操作指引
- 中老年营养均衡配餐方案
- 三年级数学教学全册教案
- 连锁药店运营管理与培训方案
- 酒店员工职业道德与服务礼仪培训
- 2026年医学检验士考前冲刺测试卷及完整答案详解1套
- 2026届浙江省普通高等学校招生全国统一考试仿真历史试题(含答案)
- 2026年重庆烟草招聘考试试题及答案
- 安徽省A10联盟2026届高三5月最后一卷历史试卷(含答案及解析)
- 智慧护理:护理创新的实践探索
- 2026年城管协管员业务知识考试题库及答案
- 2026年哈三中高三下学期三模语文试卷及答案
- 2025-2030年老年交友相亲行业深度调研及发展战略咨询报告
- 2026年上海市春考语文试卷及答案
- 山东省青岛市2026年中考英语试题
- 肠造口患者的心理支持与调适
- 河南省2026年普通高等学校对口招收中等职业学校毕业生考试机电与制造类基础课试卷
评论
0/150
提交评论