一 基础概念
1.1变量
- 变量的定义格式:Dim | Private | Static | Public 变量名 As 数据类型
- Dim | Private | Static | Public : 就是我之前所说的权限的意思。
- As 数据类型 :这个是可选项,你可以为这个变量设置数据类型。
- Dim num As integer
- 如果某变量在很多过程中都会用到,可将其声明为全局变量,否则直接生命在过程中,过程结束会自动释放空间
- 声明在模块中(局部变量):
- 全局变量
1.1.1运算符
- 加号“+”:可实现想加或相连接如果两个值都是字符串则表示相连:
- 在VB中就提供了两种连接用的字符串运算符 “&”、“+”
例如 “VB”+“编程入门” 就等同于“VB编程入门”
“VB”&“编程入门” 就等同于“VB编程入门”
说明: 在字符串数据后面使用“&” 时,应该在运算符和字符串之间加一个空格 “A” & “B” 二不是"A"&“B”
原因是应为,”&“也是整型的类型说明符,如果没有空格的话,程序运行的时候,系统就会默认为他只是一个 类型说明符,单个的类型说明符赤裸的出现在代码中就会报错。
1.1.2类型转换
- CType(X)
[格式]:
P=CBool(X) ’ 将X转换为"布尔"(Boolean)类型
P=CByte(X) ’ 将X转换为"字节"(Byte)类型
P=CCur(X) ’ 将X转换为"金额"(Currency)类型
P=CDate(X) ’ 将X转换为"日期"(Date)类型
P=CDbl(X) ’ 将X转换为"双精度"(Double)类型
P=CInt(X) ’ 将X转换为"整型"(Integer)类型
P=CLng(X) ’ 将X转换为"长整型"(Long)类型
P=CSng(X) ’ 将X转换为"单精度"(Single)类型
P=CStr(X) ’ 将X转换为"字符串"(String)类型
P=Cvar(X) ’ 将X转换为"变体型"(Variant)类型
P=CVErr(X) ’ 将X转换为Error值 - 默认textBox中内容为String类型,如果直接相加起到的是链接的作用,用Cint转换数据类型后才能起到相加的作用。
1.2控制结构
1.2.1选择语句
Selcet case 测试表达式
case 表达式1
语句
case 表达式2
语句
case 表达式3
语句
case else
语句
end select
- 先计算测试表达式的值,然后用这个值去跟case 后面的值进行匹配,如果匹配成功就执行下面的语句,如果上面的case都不成功就执行case else下面的语句,然后结束
dim a as integer
a = 2
select case a
case 1
print "1"
case 2
print "2"
case else
print "没有"
end select
1.2.2 for循环结构
- for a = 3 to 10 就是第一次放3个,他每次会比前一次+1个 放到一次放10个就停止
- for a = 1 to 10 2 ,2是步长,这个的意思比较特别,他第一次放1个,每次会比前一次多放两个,直到放到一次性放进去十个或者超出去为止
- for a=100 to10 step -1
总结:
for start to end
- 语句
next start
定义一个数,start 每次会 +1 加到end或者超过end的值就停止,每+1一次就会执行 “语句”
语句就是每次都要做的动作
'例子1: 求 1加到5'
dim a,sum
sum = 0
for a = 1 to 5
sum = sum + a
next a
'例子2:求5! '
dim a,sum
sum = 1
for a = 1 to 5
sum = sum * a
next a
'例子3:输出5次你好'
dim a
for a = 1 to 5
print "你好"
next a
1.2.3多重循环
'打印矩阵'
dim row ,col
for row = 1 to 5
for col = 1 to 5
print "*"
next col
print
next row
'打印结果:'
*****
*****
*****
*****
*****
1.3一维数组
- ReDim 语句
可以使用 ReDim 语句来更改某个已声明数组的一个或多个维度的大小。 如果数组较大,并且你不再需要它的某些元素,ReDim可通过减少数组大小来释放内存。 另一方面,如果数组需要更多元素,也可使用 ReDim 进行添加。
ReDim 语句仅供数组使用。 它对标量(仅包含单个值的变量)、集合或结构无效。 请注意,如果将变量声明为 Array 类型,则 ReDim 语句将没有足够的类型信息来创建新数组。
- 定义格式:Dim array(20) as 数据类型
dim i
dim arry(50) as integer
for i = 0 to 49
arry(i) = i
System.Console.WriteLine(Arry(i)) '输出数组元素
next i
这样就为arry(0) 赋值为 0
arry(1) 赋值为 1
- Array.Length 获取 Array 的所有维度中的元素总数。
'定义数组
Dim Arry(10) As Integer
For i = 0 To Arry.Length - 1
Arry(i) = i
System.Console.WriteLine(Arry(i))
Next
- 以下示例演示如何在其空格处拆分字符串。
Dim testString As String = "Look at these!"
' Returns an array containing "Look", "at", and "these!".
Dim testArray() As String = Split(testString)
For i = 0 To testArray.Length - 1
System.Console.WriteLine(testArray(i))
Next
1.4多维数组
- 第一种复制方式:
Dim array2d(,) As String = {{"zero", "0"}, {"one", "1"},
{"two", "2"}, {"three", "3"},
{"four", "4"}, {"five", "5"}}
ShowArrayInfo(array2d)
- 第二种赋值方式:
'二维数组
Dim ArrayT(2, 3) As String '三行两列
ArrayT(0, 0) = "姓名"
ArrayT(0, 1) = "电话"
ArrayT(0, 2) = "生日"
ArrayT(1, 0) = "老王"
ArrayT(1, 1) = "115"
ArrayT(1, 2) = "1月2日"
For n = 0 To 1
For m = 0 To 2
Console.WriteLine(ArrayT(n, m))
Next
Next
1.5类与对象
1.5.1类,对象
- 工具箱中每一个控件按钮都代表一个类,将其添加到窗体上就建立了相应的对象。对象具有类定义的公共属性,方法和事件。
- 设置属性方法:(1)可以在属性窗口设置(2)也可以在程序运行中更改对象的属性。对象名.属性名=属性值
- Command1.caption=“确定” 设置命令按钮的标题
- Test1.text=“VB程序设计” 设置文本框的内容
- 注释选中行与取消注释:
对象变量:
在使用对象模型的属性、方法和事件之前,必须创建一个对包含所需属性、方法和事件的类的引用。可以先声明一个局部对象变量以存储该对象引用,然后把对象引用赋给该局部变量。
声明对象变量的方法和声明其他类型的变量基本上一样。有三种声明对象变量的方法:
(1) Dim myObject As <库名>.<类名>
此方法指向类的类型库,但没有给该变量赋予任何类的实例。此时,变量myObject被赋值为Nothing。若要用这种方式引用类,就必须利用“引用”对话框向工程添加一个对类模块的引用。若要将类的实例引用赋予该变量,必须在使用该变量之前用Set语句赋值。如:
Set myObject=<库名>.<类名>
(2) Dim myObject As New <库名>.<类名>
此方法将类的新实例引用赋给Object变量。同样,要用这种方式引用类,必须先利用“引用”对话框向工程添加一个对类模块的引用。
(3) Dim myObject As Object
此方法将myObject变量声明为一般的Object数据类型,这在不能预先知道要创建的对象的数据类型时十分有用。此时,Object变量被赋值为Nothing。若要将对象引用赋值给该变量,必须使用CreateObject函数或GetObject函数。
可以用Private或Public语句替换Dim语句,且对象变量的作用域规则和其他类型的变量一样。
声明对象变量可以显著地简化代码且加快代码的执行速度。
1.5.2方法的调用
- 对象名.方法名(参数)
- Forml.Cls 消除窗体Forml上的内容
- Forml.Print “VB” 在窗体上显示VB
1.5.3子程序
- 应用程序设计的主要工作就是为对象编写事件过程的代码。
- 事件过程的框架形式:
- Sub 对象名_事件(参数)
- …过程代码
- End Sub
Button1点击事件,点击后文本框显示hello.
- 我们自己写的事件过程,需要被调用才能起作用。
-无参事件:
- 有参事件:
- 在Button事件中被调用:Call 子程序名称()。 - Call语句:将控制转移到 Function、Sub 或动态链接库 (DLL) 过程。
[ Call ] procedureName [ (argumentList) ]
组成部分 | 说明 |
---|---|
argumentList | 必需。 要调用的过程的名称。 |
procedureName | 可选。 变量或表达式的列表,它们表示在调用过程时传递给过程的参数。 多个参数之间用逗号分隔。 如果包含 argumentList,则必须用括号括起来。 |
1.无参数:
Sub TestCall()
Call (Sub() Console.Write("Hello"))()
Call New TheClass().ShowText()'类的调用
End Sub
Class TheClass
Public Sub ShowText()
Console.Write(" World")
End Sub
End Class
Private Sub Label1_BackColorChanged(sender As Object, e As EventArgs) Handles Label1.BackColorChanged
MsgBox("lable1背景颜色被改变了")
Call 子程序名称()
End Sub
Private Sub 子程序名称()
Dim a As Integer = 5
MsgBox(a)
End Sub
2.有参数:
(1)默认是按值传递即ByVal可以省略,
(2)按地址传递: ByRef
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Button1.Text = "确认"
Label1.BackColor = Color.Red
End Sub
Private Sub Label1_BackColorChanged(sender As Object, e As EventArgs) Handles Label1.BackColorChanged
MsgBox("lable1背景颜色被改变了")
Call 子程序名称("5")
End Sub
Private Sub 子程序名称(ByVal 参数名 As Integer)
Dim a As Integer = 参数名
MsgBox(a)
End Sub
End Class
(3)可选参数:option必须赋值,调用函数时,如果没有赋值给可选参数位置,使用其初始赋值。并且可选参数必须位于最后,即其他参数之后。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Button1.Text = "确认"
'Label1.BackColor = Color.Red
Dim B As Integer = 函数名1(2, 3)
MsgBox(B)
End Sub
Private Function 函数名1(ByVal 参数1 As Integer, ByRef 参数2 As Integer, Optional A As Integer = 3)
MsgBox(A)
Return 参数1 + 参数2
End Function
1.5.4函数定义
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Button1.Text = "确认"
'Label1.BackColor = Color.Red
Call 函数名1()'调用函数
End Sub
'定义函数,与子程序类似
Private Function 函数名1()As As Integer
MsgBox("12345")
End Function
1.5.5 Sub 与 Function 在VB程序设计中的区别
- Private Sub 与 Function 在VB程序设计中的区别
- function是函数,sub是子程序,都可以传递参数,但函数有返回值,子程序没有
- function 可以用自身名字返回一个值,sub 需定义别的变量,用传址方式传回值。
- Sub 过程与Function 过程的区别:
1. Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。
2. Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句。
3. 调用过程:调用 Sub 过程与 Function 过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。Sub 过程还有一点与函数不一样,它不会用名字返回一个值。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
-调用 Sub 过程有两种方法:
以下两个语句都调用了名为 MyProc 的 Sub 过程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号
1.6对象的通用属性
- 设置属性方法:(1)可以在属性窗口设置(2)也可以在程序运行中更改对象的属性。对象名.属性名=属性值
- Name属性:对象名称,例如Form1,Command1,Text1,Label1等,名称作为对象的标识在程序中引用。
- Caption属性:对象的标题,决定标题上显示的文本。
- Height,Width属性:对象的高度,宽度。
- Top,Left属性:对象的位置,对于窗体来说,表示窗体距离屏幕顶边,左边的举例。对于对象来说,表示对象距离窗体…
- Enabled属性:可用性,决定对象是否是否可用,属性值为true表示可用,False表示不可用,呈灰色。
- Visible属性:可见性。决定程序运行时对象是否可见。属性值为true表示对象可见,False表示隐藏。
- ForeColor,BackColor:设置前景色,后景色。
- Default属性:当一个命令按钮属性的Default属性时ture时,此按钮是窗体 的默认按钮,当用户按下回车键,不管当前输入焦点在哪个控件上,都相当于点击了该按钮。
- Label中的AutoSize:属性设置为ture后外框自动适应文字大小。设置完ture后不可再通过size手动更改宽与高的数值
- 窗体form中的ControBox属性:控制窗体form窗体的右上角三个按钮是否显示。
- ShowInTaskbar:为true时,使运行后的窗体显示在任务栏。
1.7窗体对象常用事件
- 事件是指对象能够识别并做出反应的外部刺激 。窗体事件过程的语法:
- Private Sub Form_事件名()
- …
- End Sub
1.7.1Load事件
- 这是窗体加载事件,也就是说,在窗体启动的同时就执行这个事件里的代码。
比如说你窗体上添加了一个文本框(Text)控件。你在Form_load中加入一下代码:
Private Sub Form_Load()
Text1.text=“Visual Basic”
End sub
那么,你启动程序后,窗体中文本框上便是"Visual Basic"。
因为它先执行了form_load事件中的代码。
1.7.2Click事件和弹窗MsgBox()函数
- Click事件是鼠标点击事件,此事件无参数。语法结构:
- Private Sub form_Click()
- 虽然无参数但括号不可省略。
- MsgBox()函数输出括号内容,弹窗的作用。
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label1.Text = "你好"
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Button2.Text = 123
Button2.BackColor = Color.Aquamarine
Button1.BackColor = Color.Aquamarine '可以改变其他控价属性
MsgBox(Label1.Text) '当点击Button2时出现弹窗并显示Label1中的内容
End Sub
End Class
1.7.3点击按钮出现新窗体
- 创建窗体Form1,Form2
- 在Form1中添加按钮Button1,进入代码编辑页面
Private Sub Button1_Click()
Form2.Show
end Sub
1.7.4什么是控件提示?
-
将鼠标放在控件上按F1会调出帮助文档
-
控件Button.自动提示中扳手代表属性,紫色正方体代表自带的方法。
-
控件提示是说明控件、页面或标签的简洁短句。当鼠标指针在一个控件上停留片刻,而不单击时,就会出现控件提示。控件提示和工具提示非常相似。
-
选定所需控件。选择“属性”窗口中的 ControlTipText 属性。 也可以通过编写代码来设置 ControlTipText 属性的值。
1.7.5向工具箱添加新控件
- 请在“工具箱”中的任意控件的图标上或任意页面的空白区域上单击鼠标右键。
- 单击快捷菜单中的“附加控件”命令。
- 从“可以使用的控件”列表中选择新的控件。
- 单击“确定”按钮。
1.7.6sstab控件实现多页面操作
- 常用属性:
2.通过设置tabs属性值,添加一个tab后不在同一行
- 解决办法:sstab属性卡里有一个属性:TabsPerRow ,返回或者设置在每一行出现的选项卡号。比如你有4个TAB页,这里设置4,那么4个TAB页就都在一行显示了。
解决后: