资源描述
高 级 篇 317
实例71:提示信息
实例说明
在本实例中,我们将介绍使用如何使用ToolTip控件来显示提示信息。程序运行后,可以设置显示提示信息的时间以及是否显示提示信息。程序运行结果如图71-1所示。
图71-1 运行结果
技术要点
l ToolTip控件
l 显示/隐藏提示信息
l 显示提示信息的时间
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“ToolTipExam”,然后选择保存路径。单击“确认”。
■ 添加控件
向窗体上添加一个Label控件,用于测试提示信息。添加一个GroupBox控件,在GroupBox控件上放置两个CheckBox控件,然后再添加三个Label控件和三个TextBox控件,用于设置提示时间。最后添加两个Button控件。
■ 设置属性
对窗体上的控件设置属性,在本实例中,我们只需要将所有控件的Text属性改为和界面一致。
■ 添加代码
'是否显示提示信息
Private Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged
ToolTip1.Active = CheckBox1.Checked
End Sub
'是否显示提示信息,当窗体没有获得焦点时
Private Sub CheckBox2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox2.CheckedChanged
ToolTip1.ShowAlways = CheckBox1.Checked
End Sub
'提示信息延迟时间
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
ToolTip1.AutomaticDelay = Val(TextBox1.Text) * 1000
End Sub
'提示信息弹出时间
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
ToolTip1.AutoPopDelay = Val(TextBox2.Text) * 1000
End Sub
'提示信息刷新时间
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.TextChanged
ToolTip1.ReshowDelay = Val(TextBox3.Text) * 1000
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
我们在本实例中主要讲解了ToolTip控件的使用方法。ToolTip控件几乎在我们的每个程序中都要使用。相信大家一定会掌握好这个控件的。
实例72:使用数据集
实例说明
在本实例中,我们再利用VB.NET开发一个程序,即使用DataSet数据集来制作一个程序。程序运行结果如图72-1所示。
图72-1 运行结果
技术要点
l 使用DataSet控件
l 添加数据集文件
l 连接DataSet控件和DataGrid控件
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“DatasetExam“,然后选择保存路径。单击“确认“。
■ 添加控件和数据集
向当前窗体上添加一个DataGrid控件(在工具箱“Windows窗体”选项卡上),然后选择菜单“项目|添加新项”,在弹出的对话框中选择“数据集”,输入文件名,单击“确定”按钮。然后双击Dataset.xsd文件,在工具箱中向DataSet1上添加一个element元素。其界面如图72-2所示。
图72-2 数据集的界面
最后向窗体上添加一个DataSet控件(在工具箱“数据”选项卡上)。弹出如图72-3所示的界面。在典型化数据集“名称”中选择刚才的数据集文件。单击“确定”。
图72-3 运行结果
■ 设置属性
切换到窗体的界面,给窗体上的控件设置属性,详细情况见表72-1。
表72-1 设置窗体及控件的属性值
窗体/控件
属性
值
Form1
Text
使用数据集
DataGrid1
DataSource
DataSet1
DataMember
element1
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
通过对本实例的学习,我们应该掌握如何添加和使用数据集(DataSet)。数据集是从数据库衍生过来的数据内存缓冲,它是ADO.NET结构的主体部分。数据集由一系列的数据表(DataTable)对象组成。
实例73:创建停靠工具栏
实例说明
在本实例中,我们将创建一个具有停靠功能的应用程序,程序运行后,可以选择停靠位置如左、右、填充等。程序运行结果如图73-1所示。
图73-1 运行结果
技术要点
l Panel控件
l Dock属性
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“DockMan”,然后选择保存路径。单击“确认”。
■ 添加控件
向窗体上添加一个Panel控件,然后向Panel控件上放置一个Button控件,添加一个GroupBox控件,在GroupBox控件上放置六个RadioButton控件。注意放置顺序。先放Panel,GroupBox控件,然后再放置别的控件。
■ 设置属性
切换到属性栏,对窗体上的控件设置属性,我们在表73-1中仅列出主要的属性,详细的属性设置请见光盘。
表73-1 窗体/控件的属性值
窗体/控件
属性
值
Form1
Text
停靠工具栏示例
RadioButton1
Name
RdbNone
Text
无
■ 添加代码
Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Namespace Microsoft.Samples.WinForms.VB.DockMan
Public Class DockMan
Inherits System.Windows.Forms.Form
Private rdbSet As System.Windows.Forms.RadioButton
Public Sub New()
MyBase.New()
DockMan = Me
'This call is required by the Windows Forms Designer.
InitializeComponent()
'TODO: Add any initialization after the InitializeComponent() call
rdbSet = rdbNone
ApplyChanges()
End Sub
Public Overloads Overrides Sub Dispose()
MyBase.Dispose()
components.Dispose()
End Sub
<STAThread()> Shared Sub Main()
System.Windows.Forms.Application.Run(New DockMan())
End Sub
Private Sub ApplyChanges()
'应用更改
If rdbSet Is rdbNone Then
btnDemo.Dock = System.Windows.Forms.DockStyle.None
ElseIf rdbSet Is rdbTop Then
btnDemo.Dock = System.Windows.Forms.DockStyle.Top
ElseIf rdbSet Is rdbLeft Then
btnDemo.Dock = System.Windows.Forms.DockStyle.Left
ElseIf rdbSet Is rdbBottom Then
btnDemo.Dock = System.Windows.Forms.DockStyle.Bottom
ElseIf rdbSet Is rdbRight Then
btnDemo.Dock = System.Windows.Forms.DockStyle.Right
Else ' The default is: if (rdbSet is rbFill)
btnDemo.Dock = System.Windows.Forms.DockStyle.Fill
End If
End Sub
Private components As System.ComponentModel.IContainer
Private Sub checkbox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
ApplyChanges()
End Sub
Private Sub radiobutton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles rdbBottom.Click, rdbFill.Click, rdbLeft.Click, rdbRight.Click, rdbTop.Click, rdbNone.Click
rdbSet = CType(sender, RadioButton)
ApplyChanges()
End Sub
End Class
End Namespace
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
本实例主要使用了Dock属性来确定停靠工具栏的位置,我们还可以使用鼠标拖动来进行操作,就像拖动任务栏一样。这些程序由读者自行开发。
实例74:旋转月亮
实例说明
在本实例中,我们将制作一个具有“旋转月亮”功能的应用程序。程序运行后,单击“开始演示”按钮,即可开始旋转月亮。此时按钮标题会变为“停止演示”。再单击该按钮,则停止旋转月亮。程序运行结果如图74-1所示。
图74-1 运行结果
技术要点
l Timer控件
l 显示/隐藏图片
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“SpinMoon”,然后选择保存路径。单击“确认”。
■ 添加控件
向窗体上添加一个Button控件和九个Picture控件。
■ 设置属性
将Button控件的Text设置为“开始演示”,将Picture控件的名称改为imgMoon1—imgMoon9,并装入相应的图片。
■ 添加代码
Dim i As Short
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
If Command1.Text = "开始演示" Then
Command1.Text = "停止演示"
Timer1.Enabled = True
Else
Command1.Text = "开始演示"
Timer1.Enabled = False
End If
End Sub
Private Sub Form1_Load(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles MyBase.Load
i = 1
End Sub
Private Sub Timer1_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer1.Tick
Select Case i
Case 1
imgMoon1.Visible = True
imgMoon3.Visible = False
imgMoon4.Visible = False
imgMoon5.Visible = False
imgMoon6.Visible = False
imgMoon7.Visible = False
imgMoon8.Visible = False
imgMoon9.Visible = False
Case 2
imgMoon1.Visible = False
imgMoon2.Visible = True
imgMoon3.Visible = False
imgMoon4.Visible = False
imgMoon5.Visible = False
imgMoon6.Visible = False
imgMoon7.Visible = False
imgMoon8.Visible = False
imgMoon9.Visible = False
Case 3
imgMoon1.Visible = False
imgMoon2.Visible = False
imgMoon3.Visible = True
imgMoon4.Visible = False
imgMoon5.Visible = False
imgMoon6.Visible = False
imgMoon7.Visible = False
imgMoon8.Visible = False
imgMoon9.Visible = False
………………中间代码省略……………………
Case 9
imgMoon1.Visible = False
imgMoon2.Visible = False
imgMoon3.Visible = False
imgMoon4.Visible = False
imgMoon5.Visible = False
imgMoon6.Visible = False
imgMoon7.Visible = False
imgMoon8.Visible = False
imgMoon9.Visible = True
Case Else
MsgBox("错误!")
End Select
i = i + 1
If i > 9 Then
i = 1
End If
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
本实例是通过显示不同的图片来达到旋转月亮的效果。由于在VB.NET中没有了控件数组,因此我们只能分别隐藏和显示。
实例75:轻松控制Word
实例说明
在本实例中,我们将制作一个能够控制Word文件的建立和打开的应用程序。我们可以在文本框中输入文件名,单击“新建”按钮即可新建一个Word文档,或者打开一个Word历史记录文件。程序运行结果如图75-1所示。
图75-1 运行结果
技术要点
l 添加Word库引用
l 建立Word对象
l 读取Word历史记录文件
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“ControlWord”,然后选择保存路径。单击“确认”。
■ 添加引用和控件
选择菜单“项目|添加引用”,在弹出的“添加引用”对话框中选择COM选项卡,选中“Microsoft Word 10.0 Object Library”,单击“选择”按钮,即可将Word库加入到当前项目中。添加时的界面如图75-2所示。然后,给窗体上添加两个Label控件和两个Button控件,一个TextBox控件和一个ComboBox控件。
图75-2 添加Word引用
■ 设置属性
对窗体上的控件设置属性,如表75-1所示。
表75-1 窗体及控件的属性值
窗体/控件
属性
值
Form1
Text
轻松控制Word
TextBox1
Text
空
ComboBox
Text
空
Button1
Text
新建
■ 添加代码
Public Sub New()
MyBase.New()
'程序启动时,添加Word历史记录文件
'This call is required by the Windows Form Designer.
InitializeComponent()
Dim i As Short
Dim tempword As New Word.Application()
For i = 1 To tempword.RecentFiles.Count
ComboBox1.Items.Add(tempword.RecentFiles.Item(i).Name)
Next
'ComboBox1.Text = ComboBox1.Items.IndexOf(ComboBox1).ToString
'combobox1.Items.GetTy
tempword.Quit()
'Add any initialization after the InitializeComponent() call
End Sub
'打开word文件
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim b As New Word.Application()
b.Documents.Open(ComboBox1.Text)
b.Visible = True
End Sub
'新建word文件
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim word As New Word.Application()
word.NewDocument.Add(TextBox1.Text)
word.Visible = True
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
本实例我们先引用了Word库,然后新建Word对象,这样就可以实现与Word的连接了。其余对象的引用类似。
实例76:轻松控制Excel
实例说明
在本实例中,我们制作一个能够建立和打开Excel文档的应用程序。程序运行结果如图76-1所示。
图76-1 运行结果
技术要点
l 添加Excel库
l 新建/打开Excel文件
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“ControlExcel”,然后选择保存路径。单击“确认”。
■ 添加控件
选择菜单“项目|添加引用”,在弹出的“添加引用”对话框中选择COM选项卡,选中“Microsoft Excel 10.0 Object Library”,单击“选择”按钮,即可将Excel库加入到当前项目中。添加时的界面如图76-2所示。然后,给窗体上添加两个Label控件和两个Button控件,两个TextBox控件。
图76-2 添加Excel引用
■ 设置属性
对窗体及控件进行属性设置。在本实例中,我们只需将窗体和各个控件的Text属性设置为和界面一致即可。
■ 添加代码
'新建Excel文档
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim excel As New Excel.Application()
Dim chart As New Excel.Chart()
excel.Visible = True
excel.NewWorkbook.Add(TextBox1.Text)
End Sub
'打开Excel文档
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim excel As New Excel.Application()
excel.Visible = True
excel.Workbooks.Open(TextBox2.Text)
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
本实例我们先引用了Excel库,然后新建Excel对象,就可以实现与Excel的连接了,在本实例中我们只是介绍了新建和打开文件的方法,其他方法读者可以自行研究。
实例77:简单动画
实例说明
在本实例中,我们将制作一个能实现简单动画功能的应用程序。程序运行后,可通过不断改变两个图片实现动画效果。程序运行结果如图77-1所示。
图77-1 运行结果
技术要点
l 切换图片
l Timer控件的使用
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“SimpleDynPic”,然后选择保存路径。单击“确认”。
■ 添加控件
向当前窗体上添加一个Timer控件,一个Button按钮,一个Label控件和两个Picture控件。
■ 设置属性
对窗体上的控件设置属性,详细情况如表77-1所示。
表77-1 窗体及控件的属性值
窗体/控件
属性
值
Timer1
Enable
True
Interval
1000
Form1
Text
简单动画
■ 添加代码
Dim flap As Short
Private Sub butterfly()
' 在两个位图间切换.
If flap = 0 Then
btrfly.Image = btrfly1.Image
flap = 1
Else
btrfly.Image = btrfly2.Image
flap = 0
End If
End Sub
Private Sub Okay_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Okay.Click
infoform.DefInstance.Close()
End Sub
Private Sub Timer2_Tick(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Timer2.Tick
' 可以更改Timer控件的时间间隔属性来决定动画的快慢
butterfly()
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
本实例通过使用Timer控件在两个图片之间不断切换以实现动画的效果。
实例78:VB与MATLAB接口的实现
实例说明
在本实例中,我们制作一个能够与Matlab进行交互的应用程序。程序运行结果如图78-1所示。
图78-1 运行结果
技术要点
l 引用Matlab库
l 执行Matlab命令
l 结束Matlab
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“CnMatlab”,然后选择保存路径。单击“确认”。
■ 添加控件
向当前窗体添加五个Button按钮,两个Picture控件,一个Label控件,一个Hscroll控件和一个Vscroll控件。单击菜单“项目|添加引用”,选中“Matlab Automation(Version5.3)Type Library”这一项。
注意:本程序只能在安装有Matlab的机器上运行。
■ 设置属性
将Label控件和Command按钮的Text属性设置为与界面一致。在此不再赘述。
■ 添加代码
Dim str1 As String
' 显示正弦图
Private Sub Command1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command1.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
matlab.MinimizeCommandWindow()
str1 = "t=1:0.1:2*pi;y=sin(t);plot(t,y)"
matlab.Execute(str1)
matlab.Execute("print( gcf, '-djpeg', 'c:\foo')")
matlab.Quit()
matlab = Nothing
ShowPic()
End Sub
' 显示三维扇形图
Private Sub Command2_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command2.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
str1 = "sale=[100 150 400 250];pie3(sale,[0 0 1 0],{'春季','夏季','秋季','冬季'})"
matlab.Execute(str1)
matlab.Execute("print( gcf, '-djpeg', 'c:\foo')")
matlab.Quit()
matlab = Nothing
ShowPic()
End Sub
' 显示三维螺旋线图
Private Sub Command3_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command3.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
str1 = "t=0:0.1:8*pi;plot3(sin(t),cos(t),t)"
matlab.Execute(str1)
matlab.Execute("print( gcf, '-djpeg', 'c:\foo')")
matlab.Quit()
matlab = Nothing
ShowPic()
End Sub
' 显示立体球图
Private Sub Command4_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command4.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
str1 = "k = 5;n = 2^k-1;[x,y,z] = sphere(n);c = hadamard(2^k);surf(x,y,z,c);"
str1 = str1 & "colormap ([1 1 0; 0 1 1]);axis equal"
matlab.Execute(str1)
matlab.Quit()
matlab = Nothing
ShowPic()
End Sub
' 显示立体波浪图
Private Sub Command5_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Command5.Click
Dim matlab As Object
matlab = CreateObject("matlab.application")
str1 = "[X,Y,Z] = peaks(30);surfc(X,Y,Z);colormap hsv;axis ([-3 3 -3 3 -10 5])"
matlab.Execute(str1)
matlab.Execute("print( gcf, '-djpeg', 'c:\foo')")
matlab.Quit()
matlab = Nothing
ShowPic()
End Sub
■ 运行程序
单击菜单“调试|启动”或单击 图标运行程序。
小结
Matlab具有数值运算方便、快捷和画图的优点。它与VB结合,能实现功能强大的程序。因此,我们利用VB.NET可以开发出很有使用价值的程序。
实例79:获得主机名和IP地址
实例说明
在本实例中,我们将制作一个能获得计算机名称和本地IP地址的应用程序。程序运行后,可以点击“更改主机名”按钮,在弹出的对话框中输入要修改的名称,确定后重新启动计算机即可实现改变。程序运行结果如图79-1所示。
图79-1 运行结果
技术要点
l 获得/更改计算机名称
l 获得本地IP地址
实现过程
■ 新建项目
打开Visual Studio.NET,选择“新建项目”,在项目类型窗口中选择“Visual Basic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“GetComputerIP”,然后选择保存路径。单击“确认”。
■ 添加控件
向当前窗体上添加四个Label控件,一个Button控件和一个AxWinSocket控件(AxWinSocket控件需要从自定义工具箱中添加,此控件不属于标准控件,添加方法请见前面实例)。
■ 设置属性
将Button控件和两个Label控件的Text属性改为和界面一致即可。
■ 添加代码
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
' 得到计算机名称还可以使用GetComputerName()API函数
Label2.Text = UCase(AxWinsock1.LocalHostName)
' 得到本机的IP地址
展开阅读全文