第二章 开始编写VB.net程序
搭建好编程环境后就可以开始编写VB.net的程序了,事不宜迟,立刻体验编程的乐趣吧。
2.1 第一个VB.net程序——Hello
World
2.1.1 Hello World
如果你读过其他编程教材,那么对Hello
World你肯定不会陌生,在任何一门语言的初级教程中,让读者编写的第一个程序必然是输出Hello World这个字符串。本书也不例外,现在就开始编写第一个程序吧。
2.1.2 创建项目
首先,启动Microsoft Visual
Studio,在起始页界面可以直接点击新建项目,也可以点击菜单“文件—新建项目”或点击快捷键Ctrl+N,弹出的窗口如图:
http://s12/middle/651cccf7gc860921ff06b&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
这是新建项目窗口,左侧选择Visual
Basic之后,右侧出现了模板列表。模板列表上方可以选择.NET Framework的版本,这里选择.NET Framework 2.0(Visual Studio
2005无需选择)。
模板列表中有很多种项目类型,而且随着.NET
Framework版本的提高而增加。.NET 2.0支持创建的项目类型有Windows窗体应用程序、控制台应用程序、ASP.NET网站还有SilverLight应用程序等。
选择Windows窗体应用程序(Visual Studio 2005中为“Windows应用程序”),窗体下方可以设置项目的名称,默认是WindowsApplication1,这里我们把它改为HelloWorld。
点击确定按钮,完成项目的创建。
2.1.3 认识Visual Studio
原本这一节应该放在第一章,但是本着“用到再学”的原则,这里介绍Microsoft Visual Studio的界面。
首先是工具箱,在Visual
Studio的左侧(如果找不到工具箱,可以按快捷键Ctrl+Alt+X),如图:http://s15/middle/651cccf7gc8609330f76e&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
只要.NET的版本相同,每个版本的Visual Studio中的内容都相同,窗体的设计就依靠工具箱中的控件了。工具箱中除了默认的控件如Button(按钮)、Label(标签)等等之外,还可以添加自定义控件,这将在以后的章节中具体介绍。
接下来是属性窗口,点击中间新建的窗体后按下F4(如果中间是一片空白没有打开新建的窗体,就点击Ctrl+Alt+L转移到解决方法资源管理器窗口,双击Form1.vb文件),焦点就来到了属性窗口,如图:
http://s15/middle/651cccf7gc8609557db6e&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
在新建项目的同时,默认创建了一个窗体Form1,这便是窗体的属性。
接下来要认识设计器界面了,设计器界面如图:
http://s8/middle/651cccf7gc860976d1067&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
可以看到默认新建的窗体Form1就在这里,右侧、下端和右下角有三个小方框,可以通过拖动他们改变窗体的大小,窗体的默认大小是300*300。当然也可以通过修改属性窗口中的Size属性来更改窗体大小。
在设计窗体时,在工具箱中选取控件,然后通过鼠标点击的方式,就可以在窗体上添加控件了。当然这只是其中一种设计的方式,叫“所见即所得”,还有一种是通过代码添加控件,这也将在以后的章节中详细讲述。
点击F7进入代码页面,初始状态如图:
http://s1/middle/651cccf7gc8609906f5a0&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
实现功能的所有代码都将在这个界面编写,这就是以后我们接触到最多的一个界面,因此调整合适的字体、背景颜色等相当重要。
以上便是我们目前要用到的几个界面,事不宜迟,赶紧开始编写第一个程序吧。
2.1.3 制作自己的窗体
点击F5,或点击工具栏上启动调试的按钮,如图:
http://s16/middle/651cccf7gc860c84642df&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
等待生成成功,就会出现一个窗体,这表示程程序成功运行起来了,如图:
http://s11/middle/651cccf7gc860c9910e2a&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
这是默认生成的窗体Form1,跟我们一点关系都没有,我们没有对它进行任何的修改。接下来就开始制作我们的Hello World窗体吧。
首先,为了防止数据丢失,要先保存项目,按快捷键Ctrl+Shift+S或点击工具栏上的“全部保存”按钮,首次保存会弹出窗体如图:
http://s4/middle/651cccf7gc860cd94c7f3&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
保存的位置就是我们在第一章中设置的目录,一般来说直接按下确定就可以了。在编写代码的过程中要记得经常保存,否则因为种种原因丢失数据就得不偿失了。
保存项目过后就开始制作我们的HelloWorld窗体了。首先打开右侧的“解决方案资源管理器”,如图:
http://s8/middle/651cccf7gc860cf217ec7&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
选中Form1.vb,按Delete键,在确认对话框中点击确定。这时设计器界面关闭,因为已经没有窗体了。
点击菜单“项目—添加新项”,或点击工具栏中的“添加新项”按钮,或按快捷键Ctrl+Shift+A,弹出添加新项对话框。在模板中选择“Windows窗体”,并在名称中输入“HelloWorld”,如图:
http://s7/middle/651cccf7gc860d1b81e86&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
然后点击添加按钮,成功添加一个新的窗体。在解决方案资源管理器中看到多出一个新的文件HelloWorld.vb。
点击选中窗体,按下F4,焦点移动到属性窗口,这里介绍一下常用的几个属性。
BackColor:窗体的背景色,属性值为任意颜色。
Icon:窗体左上角以及在任务栏中显示的图标,可以是任何ICO文件。
Opacity:窗体的透明度,1为不透明,0为全透明(不可见),属性值在0-1之间。
ShowInTaskbar:是否在Windows任务栏中出现,属性值为True或False。
Size:窗体的大小,包括Width(宽度)和Height(高度)两个属性。
StartPosition:窗体加载时的位置,属性值有Manual(由Location属性确定)、CenterScreen(屏幕中央)、WindowsDefaultLocation(起始位置Windows默认)、WindowsDefaultBounds(起始位置及窗体大小Windows默认)、CenterParent(在父窗体中央)五种。
Text:窗体的标题,属性值可以是任意字符串。
了解这些属性之后,我们就开始设计自己的HelloWorld窗体了,更改两个属性值如下:
Size:250,100
StartPosition:CenterScreen
然后开始往窗体添加控件,在工具箱中点击Label控件,然后在窗体空白处点击,新的Label控件Label1就成功往窗体上添加了,如图:
http://s1/middle/651cccf7gc860d9bf9bb0&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
点击选中Label1,按F4,焦点切换到属性窗口,这里介绍下Label的常用属性。
Font:Label显示的字体,包括字体名称、字体属性(加粗斜体)和大小。
ForeColor:字体的颜色,属性值可以是任意颜色。
Location:Label相对窗体Client区域(即不包括标题栏和边框等)的坐标,包括X和Y属性。
Text:Label中显示的文本,属性值可以是任意字符串。
了解了Label的常用属性后,将Label1的属性设置如下:
Location:80,25
Text:Hello World!!
当然Label1的位置可以根据需要用鼠标移动,或者选中后通过方向键移动。设置完成的窗体如图:
http://s15/middle/651cccf7gc860dc26050e&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
看来已经设计好了,就让我们来启动程序吧。按下F5,预想中的窗体并没有弹出(如果生成成功了自然是最好,请跳过这一段),反而出现了如图的对话框:
http://s11/middle/651cccf7gc860de0eb4da&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
点击否,下方出现了错误列表,如图:
http://s7/middle/651cccf7gc860e0cc2176&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
出现了错误导致不能正确生成应用程序,但是我们并没有编写代码,哪来的错误呢?
原因就在于我们删除了默认的启动窗体Form1,而编译器仍然去找Form1来作为启动窗体,自然就出错了。
解决办法很简单,只要把HelloWorld重新设置为启动窗体就可以了。点击菜单“项目—HelloWorld
属性”,打开项目属性页面,找到启动窗体,如图:
http://s13/middle/651cccf7gc860e2818c6c&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
点击下拉列表,重新选择HelloWorld作为启动窗体,这时再点击下拉列表,发现Form1已经不见了。
点击F5,生成成功后出现了如图所示的窗体:
http://s14/middle/651cccf7gc860e3c76b5d&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
这就是我们亲手做出来的程序,看见自己做的程序编译生成并运行起来,是一件值得高兴的事。笔者编写的第一个C语言程序通过编译时高兴了好几天,即使在后面看来那只是个简单得不能再简单的程序。
这是本书中的第一个实例,没用到代码,只是用所见即所得设计器及属性窗口的设置完成了程序的制作,生成的EXE可执行文件位于保存目录下的\HelloWorld\bin\Debug\目录,同名EXE就是生成的程序。下一次需要打开这个项目,除了能在Visual Studio的起始页中选择之外,还能通过打开保存目录下的HelloWorld.sln文件打开。
本书中的所有实例都将以ZIP压缩包的形式储存在SkyDrive中,并在每个实例之后给出链接。鉴于Microsoft软件向下兼容的特点,所有实例都将以Visual Studio 2005制作,在用更高版本的Visual Studio打开时,会出现如图所示的转换向导:
http://s15/middle/651cccf7gc860e8d865fe&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
点击下一步,在是否备份的选择中选择否,点击完成按钮,就能完成项目文件的升级了。
在项目目录下会生成UpgradeLog.XML文件及_UpgradeReport_Files文件夹,是转换日志,可以删除。
笔者发现在转换之后又会出现启动窗体为Form1的错误(如果没有就更好了),原因可能是在转换过程中自动修改了Application.Designer.vb文件,这可能导致转换后启动窗体发生改变,但是这个问题笔者相信读者已经可以解决了。
本书的实例均可以在这里找到: http://sdrv.ms/MXju42
本节实例HelloWorld下载地址: http://sdrv.ms/MXjqRM
2.2 弹出消息框的Hello World
2.2.1 改进Hello World
上一节的HelloWorld程序中,我们连一行代码都没有写,因此出现的窗体是什么都做不了的,中看不中用。从本节开始,笔者将开始介绍用代码编写程序,首先让HelloWorld程序弹出一个消息框。
2.2.2 了解函数和过程
尽管不想让读者太早接触代码的内容,但是一直做窗体设计也不是办法(有的书还真的就这样做的),因此不得不讲函数和过程了。
事实上,在汇编中,根本就不存在函数和过程的说法,它们只是高级语言所规定的东西。C/C++中有函数,却没有过程。而VB中则有了函数和过程的区别。
下面来介绍一下两者。
其实函数和过程是同一样东西,就是一大段代码。先不用理会过程,理解了函数,就很快能理解过程了。
函数,在数学上是指一个表达式,例如f(x)=2x+5,这时一个简单的一次函数,根据输入的x值,算出函数值。上述例子中,x为5时函数值就是f(5)=2*5+5=15。其实编程中的函数是一样的,就是有一个功能,需要多次去实现。而每次都打一大段代码显得很复杂、凌乱,于是将实现这个功能的代码弄到一块,就是函数。
数学中,常用f表示函数,f是function的简写,function就表示函数、方法。编程中的函数有几个要素,它们是参数列表、代码段和返回值。
参数列表就是要输入进行运算的参数,例如数学函数f(x)中,x就是参数。但是假设有一个函数g(x,y)=3x+5y,这个函数的参数有两个,那么在编程中,参数列表中就包括x和y。然而在编程中,没有参数也是允许的。
代码段就是指进行运算等操作的一段代码,相当于数学上的那个表达式。在编程中,这段代码甚至可以是空的。
返回值就是数学上的函数值,例如上述的g(x,y),如果我输入的参数是(1,2),那么函数值是13,返回值也就是函数值13。
到这里,读者应该理解了什么是函数。如果不能理解,可以联系笔者,或者询问身边会编程的朋友。请务必理解函数之后再进行接下来的学习。
函数的返回值是必须的,如果没有返回值,可能会出现程序异常。但是如果本身这段代码并不是进行运算的,而是实现一项功能的,根本不需要返回一个值,怎么办呢?
其实过程(也称“方法”)就是没有返回值的函数,过程不需要返回值,也不能设置返回值,是纯粹为了实现一项功能而存在的。
当然,程序员是可以自己定义一个函数或过程的,就像在做数学题时可以设置一个函数一样,这个操作在编程上叫做定义。而数学函数中,可以代入参数值,计算函数值,这个操作在编程上则叫做调用。
那么如何定义一个函数呢?其实不是很难,但是其中涉及了读者还未接触到的知识,因此等到下一章再进行介绍,这里只介绍调用函数的方法。不过,在学习调用函数之前,先来了解一下VB.net中的字符串。
2.2.3 VB.net中的字符串
在各种编程语言中,表示一串字符都有不同的方法,如Delphi和ASM中用英文的单引号将他们括起来。而另一种方法是英文的双引号,这种方法被VB.net使用。
也就是说,在VB.net中,表示一串字符,即String,就是用英文的双引号括起来,而英文的双引号是不分左右的。
例如,表示“Hello World!!”这串文字,在VB.net中就是这样表示:
"Hello World!!"
在双引号中,可以出现中文的双引号,但是不能再出现英文双引好,例如下面的表达是合法(符合语言法则)的:
"“Hello World!!”"
然而这样是不可以的:
"Hello”World!!"
也即是说,在VB.net中,英文双引号是成对出现的,尽管它不分左右。
2.2.4 函数及过程的调用
函数和过程都有名字,调用的时候,直接输入名字,后面加一对圆括号就可以了,这跟数学里的函数是一致的。参数就写在圆括号里面,如果有多个参数,参数之间用英文的逗号隔开。
由于还没讲怎么定义函数及过程,这里只能讲对自带库函数的调用了。这里首先介绍一个库函数MsgBox。
MsgBox的功能是弹出一个消息框,返回值指示用户按下的按钮。MsgBox有很多参数,但是基本上都是可选参数,就是可以设置也可以不设置的。只有一个参数是必须的,那就是消息框显示的内容。
例如调用MsgBox弹出一个显示“Hello World!!”的代码是:
MsgBox("Hello World!!")
这就是一个典型的函数调用,函数调用的基本格式是:
函数名(参数1,参数2,参数3)
如果没有参数,调用方式就是:
函数名()
好了,讲了一大堆知识了。如果没有完全消化也没有关系,接下来就用实例来巩固上面的知识。
2.2.4 弹出消息框的Hello World
新建一个项目,命名为HWMsgBox,创建完成之后,双击Form1窗体,来到代码界面。在这里,我们看到这样的代码:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Handles MyBase.Load
End Sub
End Class
这里的代码中比之前多了一段东西,这是因为我们双击了窗体,Visual Studio自动生成了一个过程。Function表示函数,上面的Sub也就表示过程了,这个过程有两个参数,还有一个Handles关键字,这些都是看不懂的东西。
但是没有关系,读者现在只需要知道,在这个过程里面写的代码,程序会在展示窗体之前执行。换句话说,程序先执行这段代码,再把窗体展现出来。过程名为Form1_Load,可见是窗体加载过程中执行的代码。
下面就是这个Form1_Load过程:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Handles MyBase.Load
End Sub
之前说到的代码段就写在中间的空行中。
按照之前说过的,调用MsgBox函数使其弹出消息框的代码是:
MsgBox("Hello World!!")
把这段代码放到上面的过程中,就是:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Handles MyBase.Load
MsgBox("Hello
World!!")
End Sub
完整的代码就应该是:
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs)
Handles MyBase.Load
MsgBox("Hello
World!!")
End Sub
End Class
这里面可能有很多东西读者都没法看懂,这是正常的,看懂了才有问题。按F5生成程序,弹出的消息框如图:
http://s16/middle/651cccf7gc860f789dfef&690开始编写VB.net程序——《X教程——VB.net从入门到精通》" TITLE="第二章 开始编写VB.net程序——《X教程——VB.net从入门到精通》" />
点击确定或者点击右上角的关闭按钮之后,弹出一个窗体,和我们预想中是一样的。
本节做了一个弹出消息框的Hello World程序实例,这个实例HWMsgBox的下载地址是:
http://sdrv.ms/Oq8CYH
下一章中笔者将为读者补充一些基础知识,到时候就能看懂了。如果本章节有不懂的地方,不需要太纠结,进入下一章的学习吧,你马上就会弄懂的。
加载中,请稍候......