VB编程实例讲解.docx

上传人:b****5 文档编号:8195675 上传时间:2023-01-29 格式:DOCX 页数:66 大小:591.86KB
下载 相关 举报
VB编程实例讲解.docx_第1页
第1页 / 共66页
VB编程实例讲解.docx_第2页
第2页 / 共66页
VB编程实例讲解.docx_第3页
第3页 / 共66页
VB编程实例讲解.docx_第4页
第4页 / 共66页
VB编程实例讲解.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

VB编程实例讲解.docx

《VB编程实例讲解.docx》由会员分享,可在线阅读,更多相关《VB编程实例讲解.docx(66页珍藏版)》请在冰豆网上搜索。

VB编程实例讲解.docx

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模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1