《visual basic 2005 从入门到精通》 笔记(5-9章)

来源:互联网 发布:淘宝产品突然被下架了 编辑:程序博客网 时间:2024/05/22 13:36

第五章 Visual Basic变量、公式和.NET框架

 5.1 剖析Visual Basic程序语句
编写程序语句时必须遵守的规则成为语法(Syntax)。

5.2 使用变量存储信息

变量是程序中临时存放数据的场所

为变量分配空间:Dim语句。例如 Dim LastName as string ,关键字“As”将变量的类型定义为 String 。

5.3 在程序中使用变量

每个变量必须以字母或者下划线开头,变量名只能由 字母 、数字 和下划线组成;

变量名的长度没有限制

不要用Visual Basic关键字、对象或者属性作为变量名。

5.4 使用变量保存输入信息

变量的实际作用之一就是存储用户输入的信息。

使用InputBox函数获取输入

Dim Prompt, FullName as String

Prompt = "Please enter your name"

 

FullName =InputBox(Prompt) ' OR FullName=InputBox(Prompt,"对话框标题")

Label1.text=FullName 

 

5.5 使用变量输出信息

Dim ButtonClicked  as MsgboxResult

ButtonClicked=msgbox(Prompt,Buttons,Title)

 

Prompt是在消息框中显示的文本,Buttons是需要显示在消息框中的按钮、图标和其他对象的数目,title 则是显示在消息框标题栏中的信息。该函数的返回值赋值给变量BuutonClicked,以指明用户单击的是对话框中的哪个按钮。

 

Visual Basic同时提供 MsgBox 函数和 MessageBox 类。MessageBox类是System.windows.Forms命名空间的一部分,他的很多参数都与megbox函数类似。

 

5.6 使用特定数据类型

4个新的数据类型:SByte、UShort、UInteger 和 ULong .

SByte允许保存“有符号”的字节值,即可用于正数和负数。UShort、UInteger和ULong 是“无符号”的数据类型。

 

Visual Basic 2005 的基本数据类型

 

  数据类型 大小 范围 用法示例 Short 16位 -32 768 ~ 32 767

Dim Brids as Short

Birds = 12500            

UShort 16位 0 ~ 65 535

Dim Days as UShort

Days = 55 000    

Integer 32位 -2 147 483 648 ~ 2 147 483 647

Dim  Insects as Integer

Insects = 37500000    

UInteger 32位 0 ~ 4 294 967 295

Dim Joys as UInteger

Joys = 3000000000    

Long 64位

-9 223 372 036 854 775 808 ~

9 223 372 036 854 775 807    

Dim WorldPop as Long

WorldPop = 4800000004

ULong 64位 0 ~ 18 446 744 073 709 551 615

Dim Starts as ULong

starts = 18 000000000000000000

Single 32位浮点 - 3.4028235E38 ~ 3.4028235E38

Dim Price as Single

Price=899.99

Double 64位浮点 - 1.79769313486231E308 ~
1.79769313486231E308
Dim Pi as Double
Pi=3.1415926535
Decimal
128位
-79 228 × 1024 ~ 79 228×1024
DIm Debt as Decimal
Debt=7 600300.50
Byte
8位
0 ~ 255
DIm Debt As Byte
RetKey=13
SByte
8位
-128 ~ 127
Dim Negval As SByte
NegVal = -20
Char
16位
0 ~ 65535
Dim UnicodeChar as char
UnicodeChar=“ò”
String
每个字符16位
0 ~ 20亿个16位的双字节字符
Dim Dog As String
Dog=“pointer”
Boolean
16位
True 或者 False 。按照约定 0为False,其它值为True 。
Dim Flag as String
Flag =True
Date
64位
January 1,0001 ~ December 3,9999
Dim Brithday as Date
Date=#3/1/2007#
Object
32位
可以是任意值
Dim myapp as Object
myapp=createObject("word.application")

 

如果项目中有多个窗体,声明的变量是公共变量或者说是全局变量,声明的位置是在模块。

Visual Basic允许开发人员创建自定义的数据类型,当要处理一组互相关联但属于不同数据类型的数据时。创建的方法是首先使用Structure语句创建用户自 定义类型(UDT),然后使用Dim语句声明与该类型相关的变量。Structure语句必须和变量声明语句一起放在窗体代码的最顶端或一个标准模块中, 而不能放在事件过程中。

例如,如下语句创建了一个名为employee的用户自定义数据类型,它用来存储雇员的姓名、生日和雇佣日期:

Structure Employee

 Dim Name as string

 DIm DateOfBrith as Date

 Dim HireDate as Date


end Structure


使用的时候:

Dim ProductManager as Employee

ProductManager.Name="Miller"



常量(constant):不变的量。

常量使用Const关键字来声明

Const Pi as Double =3.14159265


要使某个常量在程序的所有窗体和模块中都可以使用,需要在代码模块中声明常量,并在开始处使用Public关键字。



5.7 Visual Basic运算符

公式(Formula)是将数字、变量、运算符以及关键字组合起来以生成新值得语句。

数学运算符

运算符
数学运算
快捷运算符
+

+=
-

-=
*

*=
/

/=
/
整除
/=
mod
取余数

^
乘方(求幂)
^=
&
字符串连接
&=


运行时错误(Runtime Error)

5.8 使用.NET 框架中的数学方法

.NET框架是一个类库(class library)。

System.math 类中的数学方法

方法
用途
Abs(n)
返回 n 的绝对值
Atan(n)
返回 n 的反正切值,以弧度为单位
Cos(n)
返回 n 的余弦值,n以弧度为单位
Exp(n)
返回 e 的 n 次方
Sign(n)
如果n比0小,返回-1,如果n是0,返回0;如果n比0大,返回+1
Sin(n)
返回 n 的正弦值,n以弧度为单位。
Sqrt(n)
返回 n 的平方根
Tan(n)
返回 n 的正切值,n以弧度为单位

5.9 补充知识:建立优先级

运算符的优先级

运算符
优先级
()
括号中的优先级最高
^
乘方(某数的幂)的优先级为2
-
负号的优先级为3 */
乘除的优先级为4 /
整除的优先级为5 mod
取余数的优先级为6 +-
加减的优先级最低

第六章 条件分支结构

AndAlso 和 Orelse 是 短路(Short-Circuiting) 逻辑运算符。

6.1 事件驱动编程

程序首先等待用户输入,然后对输入的时间做出反应,并按预定的方式进行处理。这种编程方法称为 事件驱动编程(Event-Driven programming)。

比较运算符


比较运算符
意义
=
等于
<>
不等于
>
大于
<
小于
>=
大于或等于
<=
小于或等于

6.3 IF ... THEN 条件分支结构

if condition then statement

6.3.1 在 if then条件分机结构中测试多个条件

必须使用关键字 elseif 、 else 、end if 。

if condition1 then

        如果 condition1 为 true时实行的语句

elseif condition2 then

        如果condition2 为 true 时 执行的语句

else

        如果没有任何条件为 true 则执行的语句

end if


MaskedTextBox 空间以特定的格式接受用户输入。

6.3.2 在条件 表达式中使用逻辑运算符
逻辑运算符
逻辑运算符
意义
And
如果两个条件表达式的值都为true,结果则为true
Or
如果任一一个条件为true,则结果为true
Not
如果表达式的值为False,则结果为true,如果值为True,则结果为false
Xor
如果两个条件表达式的值有且仅有一个为false,则结果为true。如果两个条件表达式的值都是True或false,结果则为false。(XOR代表异或)

6.3.3 使用AndAlso 和 OrElse 执行短路

AndAlso 和 OrElse 和 And Or 大致相同。只是如果第一个条件可以确定整个表达式的值,则不进行后一个条件的判定。


6.4 Select Case 条件分支结构

test case (测试变量)

Selece Case 语法如下:

Select Case variable

case value1

        当 value1 与 variable 匹配时执行语句

Case value2

        当 value2 与 variable 匹配时执行语句

   .......

Case Else

        当没有找到任何匹配项时执行的语句

End Select


在 Select Case 结构中使用比较运算符

需要在表达式中使用 Is关键字或 To 关键字。

selece case age

    case is < 13

            .....

    case 13 to 29

            ....

    case  is  >100

end select


6.5 补充知识

事件处理程序(Event Handler)



第七章 循环结构和计时器

7.1 编写 for ... Next 循环结构
语法:
for variable = start to end

     要重复执行的语句

next [variable]


语句中 ,for、to、next 和等号(=)是必不可少的。

回车元素 chr(13)是光标移动到行首、换行元素chr(10)是光标移动到下一行的行首。

7.1.2 创建复杂的for...next循环结构

用Step关键字按照不同的增量来增加计数器的值

Exit for 语句

7.2 编写Do循环结构

Do循环结构用于执行事先不知道循环要进行多少次的情况,直到while的值为False。即,如果while为true则执行Do循环。

DO While conditon

    要执行的语句块

Loop



7.3 Timer 控件

Timer(计时器)控件,可以使程序按指定的时间长度或间隔执行某组语句。可以使用该控件从预定时间开始倒计时,也可以使用它实现程序中的某种延 时功能,还可以根据预设的时间间隔重复执行某个动作。可以通过设置Interval属性来设置计时器对象的时间间隔。将计时器的的enabled属性设置 为True即可激活计时器。
Timer控件最实用的方法就是创建数字时钟。可以使用System.DateTime.Now属性。



7.4 用Timer对象设置时间限制

设置Textbox的PasswordChar ,将使用户输入密码时文本框中显示的是星号(*),或其他用户定义的字母。

在Timer1_Tick事件过程中输入的代码即是计时器到点后运行的代码。


7.5 补充:插入代码段

Visual Basic 2005 自动配置有实用的代码段库,用户可以从自己的程序或从MSDN的在线资源中选择额外的代码段来添加。

如下:

单击 [编辑] ,指向 [IntelliSense]子菜单,选择[插入代码段]命令。

[插入代码段]列表框是一个定位工具,可以使用它浏览代码段库并向程序中插入代码段。


双击[Windows操作系统]文件夹,双击【系统信息】文件夹,双击【确定当前的Windwos版本】的代码段。Visual Basic 插入如下代码:

Dim osVersion as String

osVersion =my.computer.info.osVersion


第八章 调试Visual Basic程序

8.1 查找和更正错误

三种类型的错误:

  • 语法错误:语法错误是一种编程错误,违反了Visual Basic变成规则;
  • 运行时错误:运行时错误是在程序运行期间会导致程序意外终止的错误;
  • 逻辑错误:逻辑错误是一种人为的编程错误。

Visual Basic自动用蓝色锯齿状的下划线标出语法有错误的语句,将鼠标指针停留在该语句上面一段时间就能获得关于错误的更多信息。

打开代码编辑器,将鼠标移动到“边距指示符”栏(紧靠代码编辑器窗口左边缘之外的灰色条)上,单击该指示栏以显示一个断点。指示栏上立刻出现一个红 色断点。单击【启动调试】按钮,再次运行程序,运行到断点处,当前的语句以黄色突出显示,并在断点上出现一个箭头。在Visual Basic标题栏中出现"正在调试"字样。在调试模式下,可以查看程序中的逻辑表达式的计算过程。

进入Visual Basic程序调试模式的另一种方式,在程序代码中要暂停执行程序的位置加入一条 stop语句,这是一种古老但仍可靠的方法。

当处于调试模式时,只需将鼠标指针停留在程序代码中的变量或属性上面,就能显示它们的值。

单击调试工具栏上的【逐语句】按钮,执行下一条程序语句。

单击【调试】-【窗口】-【自动窗口】命令。【自动窗口】可以显示当前所使用的变量和属性的状态。

8.3 使用【监视】窗口查看变量

要查看在程序的整个执行过程中变量和属性的变化情况,需要使用【监视】窗口。只要程序处于调试模式,就可以利用它来跟踪重要的变量和属性。

只有处于调试模式下才能向某个【监视】窗口添加变量、属性或表达式,添加时只要在代码编辑器中选中相应的内容,然后右击该内容,再单击【添加监视】命令即可。

添加监视条目的另一种方法是从代码编辑器中将条目直接拖放到【监视】窗口中。


8.4 可视化工具:显示数据的新调试工具

Visual Basic2005在IDE中新增加了一套工具,称为可视化工具(小放大镜)。

Visual Basic2005 IDE中有4中标准可视化工具:文本、HTML、 XML可视化工具(作用于字符串对象)以及数据集可视化工具(作用于DataSet、DataView和DataTable对象)。

8.5 使用即时窗口和命令窗口。

在【即时窗口】中,键入 >CMD 命令就可以切换到【命令窗口】

在【命令窗口】中,键入immed 命令就可以切换到【即时窗口】

打开【即时窗口】,【调试】-【窗口】-【即时】
在【命令窗口】中键入File.SaveAll ,然后按下 enter 键。则会保留全部文件。

8.6 补充知识:删除断点
删除方法:在代码编辑器中,单击“边距指示符”栏中表示断点的红色圆圈。
如果在程序中不止有一个断点,可单击【调试】菜单下的【清除所有断点】将他们全部删除。

第九章 使用结构化错误处理程序捕获错误

9.1使用try...catch结构处理错误
错误处理程序利用try  catch语句和名为Err的特殊的错误处理对象来处理或捕获错误。err对象有两个属性,Number和Description 。Number属性包含运行时错误的编号,而Description属性包含描述错误的信息。
设置捕获:Try...Catch语句
Try
    可能产生错误的语句
Catch
    一旦运行时错误发生就会被执行的语句
Finally
    不管错误是否发生都会被执行的语句
End Try

Try和Catch关键字之间的语句被称为受保护代码(Protected code)。
加载图片的语句
Picturebox1.image=System.Drawing.Bitmap.FromFile(“d:/11.bmp”)
较复杂的Try catch错误处理程序
try...catch的复杂性是指:
  • 允许 try、catch或Finally代码块中有多行代码
  • 提供Catch When语句,用来检测特定的错误
  • 允许嵌套Try ...Catch 代码块,用于创建复杂且完善的错误处理程序
另外,Visual Basic还提供了一个特殊的名字Err的错误处理对象,该对象用于在try...catch代码块中识别并处理程序中特性的运行时错误。
Err对象
在Err对象的各属性中,用于识别运行时错误的最有用的属性有两个,Err.Number 和 Err.Description。Err.Number属性的值是最近发生的运行时错误的编号,而Err.Description熟悉那个则包含与运行时 错误编号匹配的描述该错误的简短信息。
例如,Err.Number = 53 是“未找到文件” 错误
try
 。。。
catch when  err.Number=53
        msgbox(err.Description)
cacth
        ....
end try

生成自定义错误:
可以在程序中手动生成自定义错误。这种方法叫做“Throwing (抛出)”或“Raising (唤起)”异常。要完成这一任务,可以使用Err.Raise方法和某一 错误编号。
try
    Err.Raise(53)
catch when Err.Number=53
...
end try

防错编程(defensive programming)该方法使用.net框架类中的便捷方法在某段程序代码执行之前首先进行确认。当涉及到系统性能问题时,采用防错编程技术更合适。

9.5 补充:Exit Try 语句。
Exit Try 语句可以实现完全跳出当前的Try或Catch代码块,如果代码块中有Finally代码,则执行该代码。但是Exit Try可以跳过所有不需要执行的其他Try 或catch语句块。