VB编程实例讲解.docx
- 文档编号:8195675
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:66
- 大小:591.86KB
VB编程实例讲解.docx
《VB编程实例讲解.docx》由会员分享,可在线阅读,更多相关《VB编程实例讲解.docx(66页珍藏版)》请在冰豆网上搜索。
VB编程实例讲解
实例53:
获得拨号网络项目
实例说明
在本实例中,我们将制作一个能够取得本地计算机上的拨号网络的项目的应用程序。
程序运行结果如图53-1所示。
图53-1运行结果
技术要点
●读取注册表内容
●添加到列表框
实现过程
■新建项目
打开VisualStudio.NET,选择“新建项目”,在项目类型窗口中选择“VisualBasic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“GetDialList”,然后选择保存路径。
单击“确认”。
■添加控件和设置属性
向窗体上添加一个ListBox控件。
将窗体的Text属性改为“获得拨号网络项目”,其余属性都保持默认。
■添加代码
PrivateDeclareFunctionRegOpenKeyLib"advapi32.dll"Alias"RegOpenKeyA"(ByValhKeyAsInteger,ByVallpSubKeyAsString,ByRefphkResultAsInteger)AsInteger
PrivateDeclareFunctionRegCloseKeyLib"advapi32.dll"(ByValhKeyAsInteger)AsInteger
PrivateDeclareFunctionRegEnumKeyLib"advapi32.dll"Alias"RegEnumKeyA"(ByValhKeyAsInteger,ByValdwIndexAsInteger,ByVallpNameAsString,ByValcbNameAsInteger)AsInteger
ConstHKEY_CURRENT_USERAsInteger=&H80000001
ConstERROR_NO_MORE_ITEMSAsShort=259
ConstERROR_SUCCESSAsShort=0
PrivateSubForm1_Load(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesMyBase.Load
DimhKeyAsInteger
DimiAsInteger
DimastrAsVB6.FixedLengthString=NewVB6.FixedLengthString(256)
IfRegOpenKey(HKEY_CURRENT_USER,"RemoteAccess\Profile",hKey)=ERROR_SUCCESSThen
WhileRegEnumKey(hKey,i,astr.Value,256)=ERROR_SUCCESS
List1.Items.Add(astr.Value)
i=i+1
EndWhile
RegCloseKey(hKey)
EndIf
EndSub
■运行程序
单击菜单“调试|启动”或单击
图标运行程序。
小结
本实例通过读取注册表中有关拨号网络的项目,然后将这些项目添加到历表框中,这就是本程序的思路。
实例54:
倒计时程序
实例说明
本实例将制作一个倒计时程序。
程序运行时,始终位于在任何窗口的最前面,双击窗体结束应用程序。
程序运行结果如图54-1所示。
可以在窗体上单击鼠标右键,在弹出的菜单中选择“设置倒计时”,设置界面如图54-2所示。
图54-1运行结果图54-2设置倒计时界面
技术要点
●保持窗体最前
●倒计时
●TimeSerial()函数
●SetWindowPos()API函数
实现过程
■新建项目
打开VisualStudio.NET,选择“新建项目”,在项目类型窗口中选择“VisualBasic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“ReverseCount”,然后选择保存路径。
单击“确认”。
■添加控件、菜单和窗体
为当前窗体添加两个Label控件和两个Timer控件。
其中一个Timer控件控制一个Label控件在上方一直循环移动;另一个Timer控件控制时间的显示。
添加一个ContextMenu控件并新建菜单“设置倒计时”和“退出”。
利用菜单“项目|添加Windows窗体”,为当前项目添加一个窗体Form2,给Form2添加四个Label控件,用于说明之用;两个Button按钮和三个TextBox控件。
最后通过菜单“项目|添加模块”为当前项目添加一个模块。
■设置属性
切换到“属性栏”,对窗体及窗体上的控件进行设置属性。
详细情况如表54-1和表54-2所示。
表54-1窗体Form1及控件的属性值
窗体/控件
属性
值
Form1
FormBorderStyle
FixedSingle
ContextMenu
ContextMenu1
Label1
Text
倒计时
Timer1
Interval
100
Timer2
Interval
1000
表54-2窗体Form2及控件的属性值
窗体/控件
属性
值
Form2
BorderStyle
0-None
StartUpPositon
CenterScreen
Text1
Text
(空)
Button1
Text
更改图片
其余控件
跟界面一致即可
■添加代码
ModuleModule1
'这是在模块中添加的代码
PublichoursAsShort
PublicminutesAsShort
PublicsecondsAsShort
PublicrevtimeAsDate
'此API函数用来使某个窗口位于所有窗口之上
PublicDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsInteger,ByValhWndInsertAfterAsInteger,ByValXAsInteger,ByValYAsInteger,ByValcxAsInteger,ByValcyAsInteger,ByValwFlagsAsInteger)AsInteger
EndModule
'下面这些代码是在窗体Form1中添加的
'双及窗体,结束应用程序
PrivateSubForm1_DoubleClick(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesMyBase.DoubleClick
Me.Close()
EndSub
'启动程序时,使程序位于任何窗体的上方
PrivateSubForm1_Load(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesMyBase.Load
Me.TopMost=True
EndSub
'开始倒计时,并显示出来
PrivateSubTimer1_Tick(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesTimer1.Tick
revtime=DateAdd(Microsoft.VisualBasic.DateInterval.Second,-1,revtime)
Label2.Text=Format(revtime,"hh")&":
"&Format(revtime,"mm")&":
"&Format(revtime,"ss")
EndSub
PrivateSubMenuItem1_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMenuItem1.Click
Form2.DefInstance.ShowDialog()
EndSub
PrivateSubMenuItem2_Click(ByValsenderAsObject,ByValeAsSystem.EventArgs)HandlesMenuItem2.Click
Me.Close()
EndSub
'下面这些代码是在窗体Form2中添加的
PrivateSubButton1_Click(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesButton1.Click
hours=Val(Text1.Text)
minutes=Val(Text2.Text)
seconds=Val(Text3.Text)
'将输入转化为时间格式
revtime=TimeSerial(hours,minutes,seconds)
Form1.DefInstance.Label2.Text=Format(revtime,"hh")&":
"&Format(revtime,"mm")&":
"&Format(revtime,"ss")
Form1.DefInstance.Timer1.Enabled=True
Form2.DefInstance.Hide()
EndSub
PrivateSubButton2_Click(ByValeventSenderAsSystem.Object,ByValeventArgsAsSystem.EventArgs)HandlesButton2.Click
Me.Close()
EndSub
■运行程序
单击菜单“调试|启动”或单击
图标运行程序。
小结
本实例介绍了一个倒计时程序,它的思路比较简单,就是获得用户输入的时间值,通过定时器每秒钟更新显示一次。
它的应用比较广泛,读者可以更改其界面,使其变得更实用、更漂亮。
实例55:
串行化数据
实例说明
在本实例中,我们将利用VB.NET向大家展示一个串行化数据的实例。
程序运行结果如图55-1所示。
图55-1运行结果
技术要点
●串行化的概念
●进行读写操作
实现过程
■新建项目
打开VisualStudio.NET,选择“新建项目”,在项目类型窗口中选择“VisualBasic项目”,在模板窗口中选择“类库”,在名称域中输入“SerializeTest”,然后选择保存路径。
单击“确认”。
■添加代码
ImportsSystem
ImportsSystem.IO
ImportsSystem.Collections
ImportsSystem.Runtime.Serialization
ImportsSystem.Runtime.Serialization.Formatters.Binary
NamespaceClassLibrary1
PublicClassSerializeTest
PublicSharedSubMain()
Console.WriteLine("Createobjectgraph")
DimlAsNewArrayList
DimxAsInteger
Forx=0To9
Console.WriteLine(x)
l.Add(x)
Nextx
Console.Write("Serializingobjectgraphtodisk..")
DimsAsStream=File.Open("foo.bin",FileMode.Create,FileAccess.ReadWrite)
DimbAsBinaryFormatter=NewBinaryFormatter
b.Serialize(s,l)
s.Close()
Console.WriteLine("Complete.")
Console.Write("Deserializingobjectgraphfromdisk..")
DimrAsStream=File.Open("foo.bin",FileMode.Open,FileAccess.Read)
DimcAsNewBinaryFormatter
DimpAsArrayList=CType(c.Deserialize(r),ArrayList)
Console.WriteLine("Complete.")
DimiAsObject
ForEachiInp
Console.WriteLine(i)
Nexti
r.Close()
Console.WriteLine(Microsoft.VisualBasic.ControlChars.CrLf&"PressReturntoexit.")
Console.Read()
EndSub
EndClass
EndNamespace
■运行程序
单击菜单“调试|启动”或单击
图标运行程序。
小结
串行化是把图式对象转换成为线性字节串行的过程。
字节序列可以发送到别处,例如远程计算机,然后执行序列解码,这样就在远程主机内存中生成了原来图式对象的克隆。
串行化过程在VB.NET中是十分容易使用的,而且是开放的,每个VB6的程序员都曾经自觉或不自觉地使用过串行化。
当任何ActiveXdll或者ActiveXexe被创建后,都有五个属性可以设置,最后一个Persistable属性就是VB6中的串行化。
VB6中串行化的过程不需要用户认知,大部分开发人员也从来不管串行化做了什么和如何运作。
在VB.NET中,有着公共对象库,每个支持.NET体系的语言都可以通过System.Runtime.Serialization的名字空间来理解和使用VB.NET的串行化特征。
串行化可以替代任何流,象MemoryStream,NetStream等,而不仅仅是FileStream。
实例56:
控制图形移动
实例说明
在本实例中,我们将使用VScrollBar控件和HScrollBar控件来控制图片的移动,我们还可以设置移动的间距大小。
程序运行结果如图56-1所示。
图56-1运行结果
技术要点
●控制图片移动
●直接拖动图片
●更改ScrollBar控件的移动间距大小
实现过程
■新建项目
打开VisualStudio.NET,选择“新建项目”,在项目类型窗口中选择“VisualBasic项目”,在模板窗口中选择“Windows应用程序”,在名称域中输入“ScrollBarCtl”,然后选择保存路径。
单击“确认”。
■添加控件
向当前窗体上添加一个GroupBox控件,在GroupBox控件上放置六个Label控件和两个ComboBox控件;然后再添加一个Picture控件,一个VScrollBar控件和一个HScrollBar控件和六个Label控件。
按照图56-1的运行结果排列好位置。
■设置属性
对窗体上的控件进行属性设置。
详细情况如表56-1所示。
表56-1窗体各控件的属性值
窗体/控件
属性
值
PictureBox
Picture
Human.jpg
ComboBox1
Items
1,2,3,4,5
ComboBox1
Itmes
5,10,20,50
其余控件
Text
跟界面一致
■添加代码
由于空间有限,我们仅列出主要代码,其余代码请看光盘。
'水平滚动条移动时,改变图片的位置
PrivateSubHScrollBar1_Scroll(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.ScrollEventArgs)HandlesHScrollBar1.Scroll
label11.Text=HScrollBar1.Value.ToString()
hAbsPos=CSng(HScrollBar1.Value-HScrollBar1.Minimum)
pictureBox1.Left=HScrollBar1.Right-CInt(hScrollMultiplier*hAbsPos)-pictureBox1.Width
EndSub
'更改大间距移动的值
PrivateSubcomboBox1_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlescomboBox1.SelectedIndexChanged
VScrollBar1.LargeChange=Convert.ToInt16(comboBox1.SelectedItem.ToString())
HScrollBar1.LargeChange=Convert.ToInt16(comboBox1.SelectedItem.ToString())
label11.Text=HScrollBar1.Value.ToString()
label12.Text=VScrollBar1.Value.ToString()
EndSub
'更改小间距移动的值
PrivateSubcomboBox2_SelectedIndexChanged(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlescomboBox2.SelectedIndexChanged
VScrollBar1.SmallChange=Convert.ToInt16(comboBox2.SelectedItem.ToString())
HScrollBar1.SmallChange=Convert.ToInt16(comboBox2.SelectedItem.ToString())
label11.Text=HScrollBar1.Value.ToString()
label12.Text=VScrollBar1.Value.ToString()
EndSub
'直接拖动图片
PrivateSubpictureBox1_MouseDown(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.Forms.MouseEventArgs)HandlespictureBox1.MouseDown
dragging=True
'(e.x,e.y)表示光标相对于图片位置的相对坐标。
我们需要将这个值保存下来
oldX=e.X
oldY=e.Y
EndSub
■运行程序
单击菜单“调试|启动”或单击
图标运行程序。
小结
本实例通过使用ScrollBar控件来控制图片的显示,这在我们要显示大图片时是很有必要的。
通过对本实例的学习,读者能够掌握ScroollBar控件的基本使用方法。
实例57:
多彩文本
实例说明
在本实例中,我们制作一个能够显示多种形式文本的应用程序。
程序运行后,即在窗体上的不同区域输出不同的文字。
程序运行结果如图57-1所示。
图57-1运行结果
技术要点
●设定不同的Brush和Font
●输出字体
实现过程
■新建项目
打开VisualStudio.NET,选择“新建项目”,在项目类型窗口中选择“VisualBasic项目”,在模板窗口中,选择“Windows应用程序”,在名称域中输入“GdipText”,然后选择保存路径。
单击“确认”。
■添加代码
PublicSubNew()
MyBase.New()
TextSample=Me
InitializeComponent()
serifFontFamily=NewFontFamily(GenericFontFamilies.Serif)
Me.SetStyle(ControlStyles.Opaque,True)
Me.SetStyle(ControlStyles.ResizeRedraw,True)
DimbackgroundImageAsImage
'设定背景图片
backgroundImage=NewBitmap(System.Reflection.Assembly.GetExecutingAssembly().
GetManifestResourceStream("colorbars.jpg"))
'新建一个画刷,我们将使用它在背景图片上画图
backgroundBrush=NewTextureBrush(backgroundImage)
'设定文本图片
DimtextImageAsImage=NewBitmap(System.Reflection.Assembly.GetExecutingAssembly().
GetManifestResourceStream("marble.jpg"))
textTextureBrush=NewTextureBrush(textImage)
'设定要使用字体格式
Me.Font=NewFont(serifFontFamily,20)
titleFont=NewFont(serifFontFamily,60)
textFont=NewFont(serifFontFamily,11)
'建立一个阴影画刷
titleShadowBrush=NewSolidBrush(Color.FromArgb(70,Color.Black))
'用设定的字体和画刷输出Japanese文本
Try
japaneseFont=NewFont("MSMincho",36)
linearGradBrush=NewLinearGradientBrush(NewPoint(0,0),NewPoint(0,45),Color.Blue,Color.Red)
CatchexAsException
MessageBox.Show("TheJapanesefontMSMinchoneedsbepresenttoruntheJapanesepartofthissample"&ControlChars.CrLf&""&
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VB 编程 实例 讲解