第13章 高级界面开发
一些著名的商用数据库应用软件,往往都具有非常美观的界面。界面是程序与用户交
互的主要媒介,简单、易用、漂亮的界面通常都会给用户留下深刻的印象,同时也帮助用
户更好地完成工作,提高他们的工作效率。而视觉效果和执行效果差的界面,一方面给用
户带来了麻烦和不便,另一方面浪费公司的时间和资源。本章将介绍有关程序界面设计方
面的内容。
本章主要内容:
● 系统托盘程序开发
● 多窗体程序设计
● 多文档窗体程序设计
● 构建 Splash 窗体
● 自画菜单
● 类 QQ 界面
13.1 系统托盘程序开发
在本实例中,将介绍在系统托盘中显示图标,并能实现动画效果和调节其动画显示速
度。在本例中,读者应掌握如何设置系统托盘。具体操作步骤如下:
(1) 启动 Visual Studio .NET,建立一个新的“Windows 应用程序”项目。命名为 DynIcon。
(2) 将一个 Button 控件、Label 控件、Timer 控件、NotifyIcon 控件和 ContextMenu 控
件从工具箱拖入到窗体上,调整它们的位置和大小,并设置它们的属性,如图 13-1 所示。
图 13-1 设计界面
(3) 在属性窗体中设置窗体以及控件的相关属性,控件的属性设置结果参见表 13-1
所示。
第 13 章 高级界面开发
• 327 •
表 13-1 窗体及控件属性设置列表
控 件 类 别
控 件 名 称
属 性
设 置 结 果
Text
动态系统图标
Form
Form1
ContextMenu
ContextMenu1
Text
实现动态系统图标
Label
Label1
ForeColor
Blue
Text
动态系统托盘程序
ContextMenu
ContextMenu1
NotifyIcon
NotifyIcon1
Icon
Face01
MenuItem1
Text
动画图标开始
MenuItem2
Text
动画图标结束
MenuItem3
Text
-
MenuItem4
Text
退出程序
MenuItem5
Text
调节动画速度
MenuItem6
增加
ContextMneu
MenuItem7
减慢
Button
Button1
Text
隐藏窗体
Timer
Timer1
Interval
200
(4) 至此,界面设计完成,下面来进行程序的代码设计。在 Form1 类里定义了全局变
量,代码如下:
Private My_Icon1 As Icon
'定义托盘图标
Private My_Icon2 As Icon
Private My_Flag As Boolean
'定义显示标志
Private My_ShowWnd As Boolean
'定义是否显示窗体的标志
(5) 在 窗 体初 始 化 时 , 设 置 显 示 标 志 My_Flag 为 True ,设 置 显 示 窗 体 的 标 志
My_ShowWnd 为 True,代码如下:
Public Sub New()
MyBase.New()
'该调用是 Windows 窗体设计器所必需的。
InitializeComponent()
My_Flag = True
My_ShowWnd = True
Try
Visual Basic .NET 数据库高级教程
• 328 •
My_Icon1 = New Icon("face02.ico") '导入图标文件
My_Icon2 = New Icon("face04.ico")
Catch exp As Exception
MessageBox.Show("错误 " + exp.Message, "动态系统托盘 - 错误")
'如果发生错误,则获取错误信息
MenuItem2.Enabled = False
MenuItem3.Enabled = False
MenuItem5.Enabled = False
End Try
'在 InitializeComponent() 调用之后添加任何初始化
End Sub
在上面代码中使用了两个图标文件,需要把这两个图标复制到该实例的 bin 目录下,
或者给出详细路径。
(6) 为上下文菜单编写代码,首先为顶级菜单编写代码,即“动画图标开始”,单击
后,即出现动画图标效果,单击“动画图标结束”,则停止动画播放,这些都是通过控制
Timer 控件来实现,代码如下:
Private Sub MenuItem1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem1.Click
Me.Timer1.Start()
Me.MenuItem6.Enabled = True
'开始播放动画
End Sub
Private Sub MenuItem2_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem2.Click
Me.Timer1.Stop()
End Sub
Private Sub MenuItem4_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles MenuItem4.Click
End
End Sub
(7) 为“调节动画速度”菜单的子菜单即“增加”、“减慢”菜单添加代码,这项功
能是通过更改 Timer 控件的 Interval 属性来实现的,代码如下:
Private Sub MenuItem7_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem6.Click
If Me.Timer1.Interval > 20 Then
Me.Timer1.Interval -= 10
If Me.Timer1.Interval <= 10 Then
Me.Timer1.Interval = 10
Exit Sub
End If
End If
第 13 章 高级界面开发
• 329 •
'增加闪烁速度
End Sub
Private Sub MenuItem8_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MenuItem7.Click
Me.Timer1.Interval += 10
'减慢速度
End Sub
(8) 为 NotifyIcon 控件的单击、双击事件编写代码。单击事件循环显示窗体,双击则
显示窗体,代码如下。
Private Sub NotifyIcon1_Click(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles NotifyIcon1.Click
If (My_ShowWnd = True) Then
'隐藏主界面
Me.Visible = False
My_ShowWnd = False
Else
'显示主界面
Me.Visible = True
My_ShowWnd = True
End If
End Sub
Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles NotifyIcon1.DoubleClick
Me.Visible = True
My_ShowWnd = True
End Sub
(9) 为 Timer 控件编写代码,在代码中设计了动画显示,它的原理就是循环设置是否
显示动画的布尔数,代码如下:
Private Sub Timer1_Tick(ByVal sender As Object, _
ByVal e As System.EventArgs) Handles Timer1.Tick
If Not (My_Icon1 Is Nothing) And Not _
(My_Icon2 Is Nothing) Then
'如果两个图标文件都被正确载入
'只要 timer1 被启动,则在两个图标之间不断进行选择变换,
'实现动画效果()
If My_Flag = True Then
NotifyIcon1.Icon = My_Icon2
My_Flag = False
Else
NotifyIcon1.Icon = My_Icon1
My_Flag = True
Visual Basic .NET 数据库高级教程
• 330 •
End If
End If
End Sub
至此,程序编写完成,按 F5 键运行,效果如图 13-2 所示。当单击动画图标开始菜单
时,则显示动画效果,效果如图 13-3 所示。
图 13-2 设置新建的计数器初始值并加一
图 13-3 动画效果
13.2 多窗体程序设计—— 向导窗体设计
在 VB6.0 中多窗体程序设计是非常简单的,通过 Form1.Show 类似的语句即可实现,
而这种多窗体的应用程序,最常见的就是用于向导窗体制作。在一些优秀的系统应用程序
中经常有系统向导这一功能,以指导用户完成某项工作。
而在 Visual Basic.NET 中取消了早期版本中的“默认窗体实例”,并且规定,只有通
过引用窗体实例,才能访问窗体的属性、方法及其控件。不是简单地使用 Form1.Show 语
句就可以调出其他窗体的,因为在 Visual Basic.NET 中窗体也变成了一个类。
本节的内容中将通过向导窗体的制作来学习多窗体的程序设计。具体步骤如下:
(1) 启 动 Visual Studio.NET ,选 择 建 立 一个 新 的 Windows 应 用 程序 。 命名 为
WizardForms。
(2) 在解决方案资源管理器窗口中添加三个窗体,Form1、Form2 和 Form3。设置它们
的界面如图 13-4 至图 13-6 所示。