大家好,欢迎来到IT知识分享网。
Vb从入门到精通
Vb从入门到精通大纲
一、基础知识
1.1 Vb概述
1.1.1 Vb的历史
Vb(Visual Basic)是一种基于事件驱动的编程语言,最初由微软公司于1991年发布。其初衷是为了让非专业程序员也能够轻松地创建Windows应用程序。在Vb的早期版本中,用户只需要简单地拖拽控件并编写少量的代码,就能够创建出一个可视化的应用程序。随着时间的推移,Vb逐渐成为了Windows平台上最受欢迎的编程语言之一,并在不断地发展与完善中。
1.1.2 Vb的特点
Vb有着易学易用的特点,其语法与自然语言十分相似,因此对于初学者来说,学习曲线较为平缓。同时,Vb还具有高效的开发速度,通过拖放控件和编写简单的代码,开发者可以快速地创建出一个可视化的应用程序。此外,Vb还支持面向对象编程,可以创建出更加复杂的应用程序。
1.1.3 Vb的应用领域
Vb广泛应用于Windows平台上的应用程序开发,包括桌面应用程序、数据库应用程序、Web应用程序等。同时,Vb还可以与其他技术结合使用,如VBA(Visual Basic for Applications)可以用于Office宏编程,ASP.NET可以用于Web开发等。因此,掌握Vb编程技术对于从事Windows平台开发的工程师来说是非常重要的。
1.2 Vb编程环境
1.2.1 Vb编程环境介绍
Vb编程环境是指Vb程序员进行开发所需要的工具和软件环境。Vb编程环境主要包括Vb集成开发环境(IDE)和Vb运行环境。Vb集成开发环境是Vb程序员进行开发的主要工具,它包括代码编辑器、调试器、编译器、代码库、窗体设计器等工具。Vb运行环境是指在用户计算机上安装的Vb运行库,它是Vb程序在用户计算机上运行所必须的环境。
1.2.2 Vb编程环境的安装和配置
在开始Vb编程之前,需要先安装和配置Vb编程环境。安装Vb编程环境需要先下载Vb IDE,可以从微软官网下载最新版本的Vb IDE。安装完成后,需要进行一些配置工作,例如设置编译器选项、配置调试器、设置代码库等。此外,还需要安装Vb运行环境,以便在用户计算机上运行Vb程序。
1.2.3 Vb编程环境的常用功能
Vb编程环境提供了丰富的功能,方便程序员进行开发和调试。其中一些常用的功能包括代码自动补全、语法高亮、调试工具、代码库、窗体设计器等。代码自动补全可以帮助程序员快速输入代码,提高编程效率。语法高亮可以使代码更加易读,方便程序员查看和修改代码。调试工具可以帮助程序员找出程序中的错误,并进行调试。代码库中包含了常用的代码片段和函数库,可以帮助程序员快速编写程序。窗体设计器可以帮助程序员设计程序界面,使程序界面更加美观和易用。
1.3 Vb数据类型
1.3 Vb数据类型
在Vb语言中,数据类型是非常重要的概念,因为它决定了变量可以存储哪些类型的数据。Vb中有多种数据类型,包括整型、浮点型、布尔型、字符型等。下面是一张Vb数据类型的表格:
数据类型 | 描述 |
---|---|
Integer | 用于存储整数,范围为-32,768到32,767 |
Long | 用于存储长整型,范围为-2,147,483,648到2,147,483,647 |
Single | 用于存储单精度浮点数,范围为-3.E38到3.E38 |
Double | 用于存储双精度浮点数,范围为-1.232E308到1.232E308 |
Boolean | 用于存储布尔值,只能是True或False |
String | 用于存储字符串,最大长度为2,147,483,647个字符 |
Date | 用于存储日期和时间值,范围为100年1月1日到9999年12月31日 |
在使用变量时,需要根据需要选择合适的数据类型。如果不确定需要哪种数据类型,可以使用Variant类型,它可以存储任何类型的数据。但是,Variant类型的缺点是效率较低,因为它需要在运行时进行类型检查。因此,应该尽可能使用具体的数据类型来提高程序的效率。
1.4 Vb运算符
1.4 Vb运算符
在 Vb 中,运算符用于执行各种算术和逻辑操作。以下是 Vb 中常用的运算符:
运算符 | 描述 |
---|---|
+ | 加法 |
– | 减法 |
* | 乘法 |
/ | 除法 |
\ | 整数除法 |
^ | 指数 |
Mod | 取模 |
And | 逻辑与 |
Or | 逻辑或 |
Not | 逻辑非 |
Xor | 逻辑异或 |
其中,算术运算符(+、-、*、/、\、^、Mod)用于执行基本的数学运算。逻辑运算符(And、Or、Not、Xor)用于执行逻辑操作,例如判断两个条件是否同时为真或者是否有一个为真等。在 Vb 中,运算符的优先级是固定的,可以使用括号来改变运算符的优先级。
以下是一些示例:
Dim a As Integer Dim b As Integer Dim c As Integer a = 10 b = 5 ' 算术运算 c = a + b c = a - b c = a * b c = a / b c = a \ b c = a ^ b c = a Mod b ' 逻辑运算 If a > 0 And b > 0 Then ' 两个条件都为真 End If If a > 0 Or b > 0 Then ' 至少有一个条件为真 End If If Not (a > 0) Then ' a 不大于 0 End If If a > 0 Xor b > 0 Then ' 只有一个条件为真 End If
在编写 Vb 代码时,需要熟悉各种运算符的使用方法,以便能够准确地执行所需的操作。
1.5 Vb流程控制语句
1.5.1 Vb流程控制语句
Vb流程控制语句是指可以控制程序执行流程的语句,包括if语句、for循环语句、while循环语句、do while循环语句等。这些语句可以根据特定条件来控制程序的执行流程,从而实现不同的功能。
在Vb中,if语句用于判断一个条件是否成立,如果成立则执行特定的语句块,否则执行另外的语句块。for循环语句用于重复执行一段代码,while循环语句和do while循环语句则用于根据特定条件来重复执行一段代码。除此之外,Vb还提供了一些其他的流程控制语句,如switch语句、goto语句等。
下面是一个简单的示例,演示了如何使用if语句来判断一个数是否为偶数:
Dim num As Integer num = 10 If num Mod 2 = 0 Then Console.WriteLine("这个数是偶数") Else Console.WriteLine("这个数是奇数") End If
在上面的示例中,我们首先定义了一个变量num,并给它赋值为10。然后使用if语句来判断num是否为偶数,如果是则输出“这个数是偶数”,否则输出“这个数是奇数”。
通过上面的示例可以看出,Vb流程控制语句可以帮助我们控制程序的执行流程,从而实现不同的功能。在实际的开发中,我们常常需要使用这些语句来实现复杂的逻辑,因此熟练掌握它们是非常重要的。
二、面向对象编程
2.1 面向对象编程概述
2.1.1 面向对象编程基本概念
面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法组合成一个对象,通过封装、继承和多态等特性,实现代码的模块化、可重用性和可维护性。在面向对象编程中,对象是程序的基本单元,每个对象都有自己的属性和方法,属性表示对象的特征,方法表示对象的行为。
2.1.2 面向对象编程的特点
面向对象编程具有以下几个特点:
- 封装性:将数据和对数据的操作封装在一个对象中,对象对外只暴露必要的接口,隐藏了对象的内部实现细节,提高了代码的安全性和可维护性。 - 继承性:子类可以继承父类的属性和方法,并可以在此基础上进行扩展和修改,减少了代码的重复性,提高了代码的可重用性和可扩展性。 - 多态性:同一种类型的对象,可以有多种不同的表现形式,不同的对象可以共享相同的接口,提高了代码的灵活性和可扩展性。
2.1.3 面向对象编程的实现
面向对象编程可以使用不同的编程语言来实现,例如Java、Python、C++等。在实现面向对象编程时,需要使用类和对象的概念。类是一种抽象的数据类型,它定义了对象的属性和方法,对象是类的一个实例,具有类定义的属性和方法。在面向对象编程中,可以使用类的继承、多态等特性来实现代码的模块化和可重用性。
2.2 Vb中的类和对象
2.2.1 类和对象的定义
在 Vb 中,类是一种数据类型,它可以包含数据成员和函数成员。对象是类的一个实例,可以使用类的成员来访问和操作对象的数据。定义类的语法如下:
Public Class MyClass ' 数据成员 Public Property Name As String Public Property Age As Integer ' 函数成员 Public Sub SayHello() Console.WriteLine("Hello, my name is " & Name & ", I'm " & Age & " years old.") End Sub End Class
上述代码定义了一个名为 MyClass
的类,包含了两个数据成员 Name
和 Age
,以及一个函数成员 SayHello
。在这个类中,我们使用了 Public
关键字来修饰成员,表示这些成员可以从类外部访问。
要创建一个类的对象,可以使用 New
关键字,如下所示:
Dim obj As New MyClass
这个语句创建了一个名为 obj
的 MyClass
对象,并且可以通过对象的成员来访问和操作对象的数据,如下所示:
obj.Name = "Tom" obj.Age = 18 obj.SayHello()
这段代码将 obj
对象的 Name
和 Age
属性分别设置为 "Tom"
和 18
,然后调用 SayHello
方法输出 "Hello, my name is Tom, I'm 18 years old."
。
2.2.2 类的继承和多态
在 Vb 中,一个类可以从另一个类继承,从而获得父类中的数据成员和函数成员。继承的语法如下:
Public Class MySubClass Inherits MyClass ' 新的函数成员 Public Sub SayGoodbye() Console.WriteLine("Goodbye, my name is " & Name & ", I'm " & Age & " years old.") End Sub End Class
上述代码定义了一个名为 MySubClass
的子类,继承自 MyClass
父类,并添加了一个新的函数成员 SayGoodbye
。在子类中,可以通过 MyBase
关键字来访问父类的成员,如下所示:
2.2.1 类的定义与使用
在 Vb 中,类是一种自定义的数据类型,它可以封装数据和方法,并且可以创建对象实例。类的定义通常包括类名、属性、方法和事件等。下面是一个简单的类定义示例:
Public Class Person Private _name As String Private _age As Integer Public Sub New(name As String, age As Integer) _name = name _age = age End Sub Public Property Name As String Get 2.2.1 类和对象的概念 在面向对象编程中,类是一种抽象的数据类型,它定义了一组属性和方法,用于描述一类具有相同特征和行为的对象。而对象则是 2.2.1 Vb中的类 在Vb中,类是一种自定义数据类型,可以包含属性和方法。定义一个类需要使用Class关键字,如下所示: ```vb Public Class 2.2.1 类和对象的概念 在Vb中,类是一种用户定义的数据类型,它可以封装数据和方法。对象则是类的一个实例,它可以访问类中的方法和属性。类和对象是面向对象编程的核心概念,通过类和对象的封装、继承、多态等特性,可以更好地组织和管理代码。 2.2.2 类的定义和实例化 在Vb中,定义一个类需要使用Class语句,例如:
Public Class Person
Public Name As String
Public Age As Integer
Public Sub SayHello()
Console.WriteLine(“Hello, my name is ” & Name & “, I’m ” & Age & ” years old.”)
End Sub
End Class
上面的代码定义了一个名为Person的类,它有两个属性Name和Age,以及一个方法SayHello。要创建一个Person对象,需要使用New关键字进行实例化,例如:
Dim p As New Person
p.Name = “Tom”
p.Age = 18
p.SayHello()
上面的代码创建了一个名为p的Person对象,设置了其属性Name和Age,然后调用了其方法SayHello,输出了一句问候语。 2.2.3 类的继承和多态 在Vb中,一个类可以从另一个类派生而来,称为继承。继承可以让子类获得父类的属性和方法,并可以进行修改或扩展。例如:
Public Class Student
2.2.1 类和对象的定义
在 Vb 中,类是一种用户自定义的数据类型,它可以封装数据和方法。类中的数据成员和方法成员可以被访问控制符(Public、Private、Friend)控制访问权限。对象是类的实例,它可以访问类中的方法和数据成员。在 Vb 中,可以使用 New 关键字来创建对象。例如,下面的代码定义了一个名为 Person 的类,包含两个数据成员 Name 和 Age,以及一个方法 GetInfo,用于返回 Person 对象的信息:
Public Class Person Public Name As String Public Age As Integer Public Function GetInfo() As String Return "Name: " & Name & ", Age: " & Age End Function End Class
要创建一个 Person 对象,可以使用以下代码:
Dim p As New Person p.Name = "Tom" p.Age = 20 Console.WriteLine(p.GetInfo())
上述代码将创建一个名为 p 的 Person 对象,并将其 Name 和 Age 属性分别设置为 “Tom” 和 20。然后,调用 GetInfo 方法,输出 Person 对象的信息 “Name: Tom, Age: 20”。
2.2.2 类的继承和多态
Vb 2.2.1 类的定义和属性
在Vb中,类是一种自定义的数据类型,它可以封装数据和方法。类的定义通过使用关键字“Class”来实现。例如,我们可以定义一个名为“Person”的类,其中包含“Name”和“Age”两个属性:
Class Person Public Name As String Public Age As Integer End Class
在这个例子中,“Name”和“Age”是“Person”类的属性。属性是类中存储数据的变量。在Vb中,属性可以是公共的(Public)、私有的(Private)或受保护的(Protected)。公共属性可以被类的实例或其他类的实例访问,私有属性只能被类内部的方法访问,受保护的属性可以被类的实例和继承类的实例访问。
2.2.2 对象的创建和使用
类是一种模板,它描述了一种数据类型的属性和方法。对象是类的 2.2.1 类的定义
在Vb中,类是一种用户自定义的数据类型,它可以包含数据成员和函数成员。类的定义使用Class关键字,如下所示:
Public Class Person Public Name As String Public Age As Integer Public Sub SayHello() Console.WriteLine("Hello, my name is " & Name & ", and I'm " & Age & " years old.") End Sub End Class
上面的代码定义了一个名为Person的类,它包含了两个数据成员Name和Age,以及一个函数成员SayHello。 2.2.1 类的定义
在Vb中,可以通过定义类来实现面向对象编程。类是一种自定义数据类型,它可以包含属性和方法。类的定义通常包括以下几个部分:
- 类的名称:类的名称应该具有描述性,以便能够清楚地表达类的作用和用途。
- 属性:类的属性是指类的数据成员,它们描述了类的状态。属性可以是公共的、私有的或受保护的。
- 方法:类的方法是指类的成员函数,它们定义了类 2.2.1 类和 2.2.1 类和对象的定义
在Vb中,类是一个用于创建对象的蓝图或模板,它定义了对象所包含的属性和方法。对象是类的一个实例,它具有类定义的属性和方法,并且可以通过调用这些方法来执行特定的任务。在Vb中,可以使用Class关键字来定义一个类,如下所示:
Public Class Person Private mName As String Private mAge As Integer Public Sub New(name As String, age As Integer) mName = name mAge = age End Sub Public Sub SayHello() Console.WriteLine("Hello, my name is " & mName & " and I am " & mAge & " years old.") End Sub End Class
上面的代码定义了一个名为Person的类,它有两个私有字段:mName和mAge。类还定义了一个构造函数New和一个公共方法SayHello。构造函数用于初始化对象的属性,而SayHello方法用于输出对象的信息。
2.2.2 创建和使用对象
要创建一个类的对象,可以使用New关键字和类 2.2.1 类的定义和使用
在 Vb 中,类是一种自定义的数据类型,它可以包含属性和方法。类的定义使用关键字 Class,后面跟着类的名称和类的主体。类的主体由属性和方法组成,其中属性用于描述对象的状态,而方法用于定义对象的行为。类的实例化是通过创建对象来实现的,使用关键字 New 调用类的构造函数来创建对象。
2.2.2 对象的初始化和使用
在 Vb 中,对象是类的实例化结果,它具有类定义的属性和方法。对象的初始化是通过调用类的构造函数来完成的,构造函数负责初始化对象的属性。对象的使用需要调用对象的方法或属性来实现。在 Vb 中,可以使用点号操作符来访问对象的属性和方法,例如 obj.property 或 obj.method()。
2.2.3 类的继承和多态
在 Vb 中,类可以通过继承来扩展已有的类的功能。继承是通过在类定义中使用关键字 Inherits 来实现的。子类可以重写父类的方法来实现多态,多态是指同一方法在不同的子类中具有不同的实现。在 Vb 中,可以使用关键字 Overrides 和 MyBase 来实现方法的重写和调用父类的方法。
2.3 Vb中的继承和多态
2.3.1 继承的概念和作用
继承是面向对象编程中的一种重要机制,它允许我们创建一个新的类,并且从一个或多个现有类中继承它们的属性和方法。在Vb中,我们可以使用关键字“Inherits
”来实现继承。例如,我们可以定义一个基类Animal
,然后定义一个子类Cat
,让Cat
继承Animal
的属性和方法。这样,Cat
就可以使用Animal
中定义的属性和方法,而不需要重新定义一遍。继承的作用在于提高代码的复用性和可维护性,因为我们可以通过继承来避免重复编写相同的代码,同时也方便了代码的修改和扩展。
2.3.2 多态的概念和实现方式
多态是面向对象编程中另一个重要的机制,它允许我们使用同一个方法或属性来处理不同类型的对象。在Vb中,多态可以通过两种方式来实现:重载和覆盖。重载是指在同一个类中定义多个具有相同名称但参数列表不同的方法,这样在调用该方法时会根据参数列表的不同来确定使用哪个方法。覆盖是指在子类中重新定义一个与父类中同名的方法,并且使用关键字“Overrides
”来标识,这样在调用该方法时会优先使用子类中的方法。
例如,我们可以定义一个基类Shape
,然后定义两个子类Rectangle
和Circle
,让它们分别重载一个名为GetArea
的方法,用于计算不同形状的面积。在调用GetArea
方法时,根据传入的对象类型来确定使用哪个方法,从而实现多态。这样,我们就可以在不同的场景中使用同一个方法来处理不同类型的对象,提高了代码的灵活性和可扩展性。
2.4 Vb中的接口
2.4 2.4.1 接口的定义
在面向对象编程中,接口是一种规范,它定义了一个类或对象应该具有的属性和方法,但并不提供具体的实现。在Vb中,接口可以通过定义一个Interface来实现。下面是一个简单的接口定义示例:
Public Interface IAnimal Sub Eat() Sub Sleep() End Interface
上述代码定义了一个IAnimal接口,它包含了两个方法:Eat和Sleep。任何实现了该接口的类或对象都必须实现这两个方法。
2.4.2 接口的实现
一个类可以实现一个或多个接口,实现接口的类必须提供接口中定义的所有属性和方法的具体实现。在Vb中,可以使用Implements关键字来实现一个或多个接口。下面是一个示例:
Public Class Dog Implements IAnimal Public Sub Eat() Implements IAnimal.Eat ' 具体实现 End Sub Public Sub Sleep() Implements IAnimal.Sleep ' 具体实现 End Sub End Class
上述代码定义了一个Dog类,它实现了IAnimal接口,并提供了Eat和Sleep方法的具体实现。
2.4.3 接口的优点
接口的使用可以提高代码的可读性和可维护性,它可以将实现细节和接口分离,使得代码更加灵活和可扩展。此外,接口还可以实现多态,使得不同的对象可以使用相同的接口进行操作。
三、Windows编程
3.1 Windows编程概述
3.1.1 Windows编程概述
Windows编程是指使用Windows操作系统的API(应用程序接口)进行开发的过程。Windows API包含了一系列的函数和数据结构,可以让开发者创建各种类型的应用程序,包括桌面应用程序、服务、设备驱动程序等。Windows编程的语言可以是C++、C#、VB等,其中VB是一种基于COM(组件对象模型)的编程语言,可以使用Visual Studio等集成开发环境进行开发。
下表列出了一些常见的Windows编程技术和工具:
技术/工具 | 描述 |
---|---|
Win32 API | Windows API的核心,提供了底层的操作系统功能。 |
MFC | Microsoft Foundation Classes,是一组C++类库,封装了Win32 API,简化了Windows编程。 |
.NET Framework | 一个运行时环境和一组类库,支持多种语言,包括C#和VB。 |
WPF | Windows Presentation Foundation,是一种基于.NET Framework的UI框架,提供了丰富的图形和多媒体功能。 |
UWP | Universal Windows Platform,是一种基于.NET Framework的应用程序框架,可以在多种设备上运行,包括PC、手机、Surface等。 |
Visual Studio | Microsoft的集成开发环境,支持多种语言和平台,包括Windows、Android、iOS等。 |
在Windows编程中,开发者需要了解Windows API的基本概念和使用方法,同时还需要掌握相应的编程语言和工具。通过使用Windows编程技术,开发者可以创建出功能强大、界面美观的应用程序,为用户提供更好的使用体验。
3.2 Vb中的窗体和控件
3.2.1 窗体的创建
在Vb中,我们可以通过拖拽控件的方式创建窗体。具体步骤如下:
- 打开Vb,新建一个工程。
- 在工具箱中选择“窗体”控件,拖拽到工作区中。
- 可以通过属性窗口对窗体进行设置,如修改窗体标题、大小等。
- 在窗体中可以添加其他控件,如按钮、文本框等。
3.2.2 控件的属性设置
在Vb中,控件的外观和行为可以通过属性进行设置。常见的属性包括:
– Name:控件的名称,用于在代码中引用控件。
– Text:控件显示的文本。
– Visible:控件是否可见。
– Enabled:控件是否可用。
– Font:控件的字体。
– BackColor:控件的背景色。
– ForeColor:控件的前景色。
– Size:控件的大小。
– Location:控件的位置。
3.2.3 事件处理
在Vb中,控件的行为可以通过事件进行处理。常见的事件包括:
– Click:当用户单击控件时触发。
– DoubleClick:当用户双击控件时触发。
– KeyDown:当用户按下键盘上的某个键时触发。
– MouseDown:当用户按下鼠标时触发。
– MouseMove:当用户移动鼠标时触发。
– MouseUp:当用户释放鼠标时触发。
我们可以通过编写事件处理程序来响应这些事件。例如,当用户单击一个按钮时,可以弹出一个消息框。
3.2.4 实例演示
下面是一个简单的实例,演示了如何创建一个窗体,并在窗体中添加一个按钮和一个文本框。当用户单击按钮时,将文本框中的内容显示在消息框中。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox(TextBox1.Text) End Sub
在该实例中,我们在窗体中添加了一个名为“Button1”的按钮和一个名为“TextBox1”的文本框。当用户单击按钮时,会触发Button1_Click事件,在事件处理程序中,我们通过MsgBox函数将文本框中的内容显示在消息框中。
3.3 Vb中的事件处理
3.3.1 事件处理概述
事件是在程序运行时发生的一些动作或状态改变,例如用户点击按钮、窗口被关闭等。在Vb中,我们可以使用事件处理程序来响应这些事件。事件处理程序是一段代码,它会在特定事件发生时自动执行。在Vb中,我们可以使用“Handles”关键字来指定一个控件的事件处理程序。
3.3.2 Vb中的常见事件
Vb中有很多常见的事件,例如“Click”事件、”TextChanged“事件等。这些事件可以在控件的属性窗口中找到。当我们双击一个控件时,Vb会自动创建一个默认的事件处理程序。我们可以在这个事件处理程序中编写代码来响应这个事件。
3.3.3 示例:处理按钮的Click事件
下面是一个处理按钮的Click事件的示例代码:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '在这里编写代码来响应按钮的Click事件 End Sub
在这个示例中,我们使用了“Handles”关键字来指定Button1控件的Click事件处理程序。当用户点击Button1按钮时,Vb会自动执行这个事件处理程序中的代码。我们可以在这个事件处理程序中编写任何我们想要执行的代码,例如打开一个新窗口、执行一段计算等。
3.4 Vb中的图形绘制
3.4.1 使用Vb绘制直线
使用Vb绘制直线需要使用Graphics类中的DrawLine方法。该方法需要传入Pen对象和两个Point对象,分别表示绘制直线的颜色、宽度和起始点、结束点的坐标。示例代码如下:
Dim g As Graphics = Me.CreateGraphics() Dim p As New Pen(Color.Black, 2) Dim startPoint As New Point(50, 50) Dim endPoint As New Point(150, 150) g.DrawLine(p, startPoint, endPoint)
3.4.2 使用Vb绘制矩形
使用Vb绘制矩形同样需要使用Graphics类中的DrawRectangle方法。该方法需要传入Pen对象和Rectangle对象,分别表示绘制矩形的颜色、宽度和矩形的位置、大小。示例代码如下:
Dim g As Graphics = Me.CreateGraphics() Dim p As New Pen(Color.Black, 2) Dim rect As New Rectangle(50, 50, 100, 100) g.DrawRectangle(p, rect)
3.4.3 使用Vb绘制椭圆
使用Vb绘制椭圆同样需要使用Graphics类中的DrawEllipse方法。该方法需要传入Pen对象和Rectangle对象,分别表示绘制椭圆的颜色、宽度和椭圆的位置、大小。示例代码如下:
Dim g As Graphics = Me.CreateGraphics() Dim p As New Pen(Color.Black, 2) Dim rect As New Rectangle(50, 50, 100, 50) g.DrawEllipse(p, rect)
以上是使用Vb绘制直线、矩形和椭圆的示例代码,可以根据需要进行修改和扩展。
四、数据库编程
4.1 数据库编程概述
4.1.1 数据库编程概述
数据库编程是指使用编程语言与数据库进行交互,实现对数据库的增删改查等操作。在后端开发中,数据库是非常重要的一部分,因为数据是应用程序的核心。常用的数据库包括MySQL、Oracle、SQL Server等。在数据库编程中,需要掌握SQL语言以及数据库连接等基础知识。SQL语言是结构化查询语言的缩写,它是对关系型数据库进行操作的标准语言。常用的SQL语句包括SELECT、INSERT、UPDATE和DELETE等。数据库连接是指将应用程序与数据库连接起来,使得应用程序可以对数据库进行操作。在连接数据库时,需要指定数据库的地址、端口号、用户名和密码等信息。常用的数据库连接方式包括JDBC、ODBC和ORM等。ORM是对象关系映射的缩写,它是一种将对象和关系数据库之间进行映射的技术,使得开发者可以使用面向对象的方式对数据库进行操作。ORM框架包括Hibernate、MyBatis等。掌握好这些基础知识,可以帮助开发者更加高效地进行数据库编程。
注:JDBC是Java数据库连接的缩写,ODBC是开放式数据库连接的缩写。
4.2 Vb中的ADO技术
4.2.1 连接数据库
在 Vb 中使用 ADO 技术连接数据库需要使用 Connection 对象。首先需要引入 ADODB 库,然后创建 Connection 对象并设置连接字符串,最后使用 Open 方法打开数据库连接。下面是一个连接 Access 数据库的示例代码:
Dim conn As New ADODB.Connection conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\myDB.mdb" conn.Open
4.2.2 执行 SQL 语句
连接数据库之后,就可以使用 Command 对象执行 SQL 语句了。首先需要创建 Command 对象并设置 CommandText 属性为要执行的 SQL 语句,然后使用 Execute 方法执行 SQL 语句。下面是一个执行查询语句的示例代码:
Dim cmd As New ADODB.Command cmd.ActiveConnection = conn cmd.CommandText = "SELECT * FROM myTable" Dim rs As ADODB.Recordset Set rs = cmd.Execute
4.2.3 处理查询结果
执行 SQL 查询语句后,可以通过 Recordset 对象获取查询结果。Recordset 对象包含多个记录(行),每个记录包含多个字段(列)。可以使用 MoveNext 方法遍历所有记录,使用 Fields 属性访问每个字段的值。下面是一个遍历查询结果的示例代码:
While Not rs.EOF Debug.Print rs.Fields("Name").Value Debug.Print rs.Fields("Age").Value rs.MoveNext Wend
4.3 Vb中的数据库操作
4.3.1 连接数据库
在Vb中,连接数据库可以使用ADODB库提供的Connection对象。首先需要创建Connection对象,然后指定连接字符串,最后打开连接即可。连接字符串包括数据库类型、服务器地址、用户名、密码等信息。示例代码如下:
Dim conn As ADODB.Connection Set conn = New ADODB.Connection conn.ConnectionString = "Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=testdb;User ID=sa;Password=;" conn.Open
4.3.2 执行SQL语句
连接数据库成功后,就可以执行SQL语句了。可以使用ADODB库提供的Recordset对象执行查询语句,使用Connection对象执行增删改语句。执行SQL语句的方法是Execute,该方法返回一个整数值,表示影响的行数。示例代码如下:
Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset rs.Open "SELECT * FROM users WHERE age > 18", conn Do While Not rs.EOF Debug.Print rs("name") rs.MoveNext Loop conn.Execute "INSERT INTO users(name, age) VALUES('Tom', 20)"
4.3.3 关闭连接
数据库操作完成后,需要关闭连接,释放资源。可以使用Connection对象的Close方法关闭连接。示例代码如下:
rs.Close Set rs = Nothing conn.Close Set conn = Nothing
4.4 Vb中的数据绑定
4.4.1 数据绑定概述
数据绑定是将数据源中的数据与控件进行关联,以便在控件中显示数据并允许用户修改数据后保存到数据源中。在Vb中,可以使用数据绑定技术来快速地将数据绑定到各种控件上,如文本框、列表框、下拉列表框等。数据绑定可以大大简化程序中的代码量,提高开发效率。
4.4.2 Vb中的数据绑定方式
Vb中的数据绑定可以通过以下几种方式实现:
- 手动绑定:手动编写代码将数据源中的数据与控件进行关联,需要开发人员编写更多的代码,但可以更加灵活地控制数据的显示和修改。
- 自动绑定:使用Vb提供的数据绑定控件,如数据网格控件、数据绑定导航控件等,可以快速地将数据绑定到控件上,无需编写过多的代码,但灵活性较差。
- 数据绑定表单:使用数据绑定表单来实现数据绑定,可以快速地生成具有数据绑定功能的表单,但灵活性较差,不适用于复杂的数据绑定需求。
4.4.3 数据绑定的优缺点
数据绑定的优点是可以大大简化程序中的代码量,提高开发效率,同时可以快速地将数据绑定到控件上,方便用户查看和修改数据。但数据绑定也有一些缺点,如灵活性较差,不适用于复杂的数据绑定需求,同时可能会影响程序的性能。
4.4.4 数据绑定的应用场景
4.4.2 Vb中的数据绑定方式
4.4.2 Vb中数据绑定的实现方式
Vb中数据绑定的实现方式有两种,一种是使用数据绑定控件,另一种是使用代码实现数据绑定。使用数据绑定控件可以简化数据绑定的过程,但是控件的样式和功能比较单一,不太灵活。使用代码实现数据绑定可以实现更为复杂的数据绑定,但是需要编写较多的代码。
4.4.3 数据绑定控件的使用
Vb中常用的数据绑定控件有DataGridView、ListBox、ComboBox等。使用数据绑定控件时,需要将数据源与控件进行关联,可以通过控件的DataSource属性来设置数据源,通过控件的DisplayMember和ValueMember属性来设置显示的字段和值字段。此外,还可以通过控件的DataBindings属性来设置数据绑定的其他属性,如格式化、排序等。
4.4.4 代码实现数据绑定
使用代码实现数据绑定 4.4.1 数据绑定的基本概念
数据绑定是将数据源中的数据与用户界面元素进行关联的过程。在 Vb 中,可以使用数据绑定来实现数据的显示、编辑和更新等操作,大大简化了开发过程。
4.4.2 Vb中的数据绑定方式
Vb 中提供了多种数据绑定方式,包括控件绑定、数据适配器绑定和自定义绑定等。其中,控件绑定是最常用的一种方式,可以将数据源中的数据直接绑定到控件上,实现数据的显示和编辑。
4.4.3 Vb中的数据绑定控件
Vb 中提供了多种数据绑定控件,包括 TextBox、ComboBox、DataGridView 等。这些控件可以直接与数据源进行绑定,实现数据的显示和编辑。
4.4.4 Vb中的数据绑定实例
以下是一个简单的 Vb 数据绑定实例:
' 创建一个数据适配器 Dim adapter As New SqlDataAdapter("SELECT * FROM Customers", connectionString) ' 创建一个数据集 Dim dataSet As New DataSet() ' 填 4.4.1 数据绑定的概念 数据绑定是指将数据源中的数据与用户界面上的控件进行关联,使得数据源中的数据可以在控件中显示或者用户输入的数据可以保存到数据源中。在Vb中,数据绑定可以使用Adodc控件、DataGrid控件以及各种数据绑定控件来实现。 4.4.2 Adodc控件的数据绑定示例 Adodc控件是Vb中用于连接数据库的控件之一,可以通过它来实现数据的绑定。下面是一个Adodc控件的数据绑定示例: ```vb Private Sub Form_Load() Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\mydatabase.mdb;" Adodc1.RecordSource = "SELECT * FROM mytable" Adodc1.Refresh Text1.DataBindings.Add "Text", Adodc1.Recordset, "myfield" End Sub 4.4.1 数据绑定的概念 数据绑定是一种将数据与用户界面元素相关联的技术,它可以使数据在用户界面中自动显示和更新。在Vb中,数据绑定可以通过使用数据绑定控件来实现,如DataGrid、DataList、Repeater等控件。其中,DataGrid是最常用的数据绑定控件之一,它可以将数据以表格的形式显示在用户界面中,并且可以支持数据的排序、分页等功能。 4. 4.4.1 数据绑定概述 数据绑定是将数据与控件进行关联,实现数据的显示、编辑、保存等操作。在Vb中,数据绑定可以通过数据绑定控件和代码实现。常见的数据绑定控件有DataGridView、ListBox、ComboBox等。 4.4.2 DataGridView数据绑定示例 DataGridView是Vb中常用的数据绑定控件,可以将数据绑定到DataGridView中进行显示和编辑。下面是一个简单的DataGridView数据绑定示例: ```vb ' 创建数据表 Dim dt As New DataTable() dt.Columns.Add("ID", 4. 4.4.1 数据绑定的概念 数据绑定是指将数据源中的数据与用户界面中的控件绑定在一起,使得数据的变化能够自动地反映在控件上,同时用户对控件的操作也能够自动地反映到数据源中。在Vb中,数据绑定可以通过数据绑定控件和代码实现。 4.4.2 数据绑定控件 Vb中提供了多种数据绑定控件,如DataGrid、DataList、Repeater等,这些控件可以自动地将数据源中的数据显示在控件上,并且支持对数据的编辑、删除、添加等操作。 4.4.3 代码实现数据绑定 除了使用数据绑定控件,Vb还提供了通过代码实现数据绑定的方式。通过代码实现数据绑定可以更加灵活地控制数据的显示和操作。在代码中,可以使用数据适配器和数据集来实现数据的绑定。 4.4.1 数据绑定概述 数据绑定是指将数据源中的数据与用户界面控件进行关联,使得用户界面能够动态地显示数据源中的数据。在Vb中,数据绑定是通过数据绑定控件来实现的,常用的数据绑定控件有TextBox、Label、DataGridView等。 4.4.2 TextBox数据绑定示例 下面是一个TextBox数据绑定的示例: ```vb Dim conn As New SqlConnection("Data Source=(local);Initial Catalog=TestDB;Integrated Security=True") Dim cmd As New SqlCommand("SELECT Name FROM Users WHERE ID=@ID", conn) cmd.Parameters.AddWithValue("@ID", 1) conn.Open() Dim reader As SqlDataReader = cmd.ExecuteReader() If reader.Read() Then TextBox1.DataBindings.Add("Text", reader, "Name") End If reader.Close() conn.Close()
上述代码中,首先创建了一个SqlConnection对象和一个SqlCommand对象,用于连接数据库和执行查询操作。然后通过AddWithValue方法为SqlCommand对象的参数赋值。接着打开数据库连接,执行查询操作,并通过SqlDataReader对象读取查询结果。最后,通过TextBox1.DataBindings.Add方法将查询结果中的Name字段与TextBox1控件进行绑定,实现了数据的动态显示。
4.4.3 DataGridView数据绑定示例
下面是一个DataGridView数据绑定的示例:
Dim conn As New SqlConnection("Data Source=(local);Initial Catalog=TestDB;Integrated Security=True") Dim cmd As New SqlCommand("SELECT * FROM Users", conn) Dim adapter As New SqlDataAdapter(cmd) Dim table As New DataTable() adapter.Fill(table) DataGridView1.DataSource = table
上述代码中,首先创建了一个SqlConnection对象和一个SqlCommand对象,用于连接数据库和执行查询操作。然后创建一个SqlDataAdapter对象,并将SqlCommand对象作为参数传入。接着创建一个DataTable对象,并通过SqlDataAdapter对象的Fill方法将查询结果填充到DataTable中。最后,将DataTable对象与DataGridView1控件进行绑定,实现了数据的动态显示。
五、高级主题
5.1 Vb中的多线程编程
5.1.1 多线程编程概述
多线程编程是指在同一程序中同时执行多个线程,可以提高程序的执行效率,增强程序的并发性和交互性。在Vb中,可以使用Thread类来实现多线程编程,具体步骤如下:
- 创建Thread对象:使用Thread类的构造函数创建Thread对象。
- 定义线程函数:在Thread对象中定义线程函数,即线程要执行的代码。
- 启动线程:调用Thread对象的Start方法启动线程。
- 等待线程结束:使用Thread对象的Join方法等待线程结束。
5.1.2 多线程编程示例
以下示例演示了如何在Vb中使用Thread类实现多线程编程:
Imports System.Threading Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ' 创建Thread对象 Dim thread1 As New Thread(AddressOf ThreadFunction) ' 启动线程 thread1.Start() ' 等待线程结束 thread1.Join() ' 显示结果 MessageBox.Show("线程执行完毕!") End Sub Private Sub ThreadFunction() ' 线程要执行的代码 For i As Integer = 1 To 10 Debug.WriteLine("线程执行第" & i & "次") Thread.Sleep(1000) Next End Sub End Class
在上述示例中,通过点击Button1按钮启动线程,ThreadFunction函数中的代码将会在一个新的线程中执行。线程执行完毕后,使用Join方法等待线程结束,然后 5.1.1 使用Thread类创建多线程
使用Thread类可以在Vb中创建多线程。下面是一个示例,演示如何创建和启动一个简单的线程:
Sub Main() Dim t As Thread = New Thread(AddressOf DoWork) t.Start() End Sub Sub DoWork() ' 在这里执行线程的任务 End Sub
在上面的代码中,我们创建了一个名为t的Thread对象,并将其初始化为执行DoWork方法。然后,我们通过调用t.Start()方法来启动线程。在DoWork方法中,我们可以编写线程的任务代码。
5.1.2 使用ThreadPool类管理线程池
ThreadPool类是Vb中用于管理线程池的类。线程池是一组可重用的线程,它们可以在需要时分配给任务。下面是一个示例,演示如何使用ThreadPool类创建和执行一个简单的任务:
Sub Main() ThreadPool.QueueUserWorkItem(AddressOf DoWork) End Sub Sub DoWork(state As Object) ' 在这里执行任务 End Sub
在上面的代码中,我们使用ThreadPool.QueueUserWorkItem方法将DoWork方法添加到线程池中。当线程池中有可用线程时,DoWork方法将在其中一个线程上执行。
5.1.3 同步和异步方法
在Vb中,我们可以使用同步和异步方法来执行任务。同步方法会阻塞调用线程,直到任务完成。异步方法则会在另一个线程上执行任务,并在任务完成时通知调用线程。下面是一个示例,演示如何使用同步和异步方法:
Sub Main() ' 同步方法 DoWork() ' 异步方法 Dim t As Task = Task.Run(AddressOf DoWork) t.Wait() End Sub Sub DoWork() ' 在这里执行任务 End Sub
在上面的代码中,我们首先调用DoWork方法来执行同步任务。这会阻塞调用线程,直到任务完成。然后,我们使用Task.Run方法创建一个异步任务,并将其初始化为执行DoWork方法。我们使用t.Wait()方法等待任务完成。这种方法不会阻塞调用线程,因为任务在另一个线程上执行。
5.1.4 线程同步和互斥
在多线程编程中,线程同步和互斥是非常重要的概念。线程同步是指多个线程在协同工作时保持同步。互斥是指多个线程在访问共享资源时避免竞争。下面是一个示例,演示如何使用Monitor类实现线程同步和互斥:
Sub Main() ' 创建共享资源 Dim sharedResource As Integer = 0 ' 创建线程 Dim t1 As Thread = New Thread(Sub() ' 获取锁 Monitor.Enter(sharedResource) ' 访问共享资源 sharedResource += 1 ' 释放锁 Monitor.Exit(sharedResource) End Sub) ' 启动线程 t1.Start() ' 等待线程完成 t1.Join() ' 输出共享资源的值 Console.WriteLine(sharedResource) End Sub
在上面的代码中,我们创建了一个名为sharedResource的共享资源,并创建了一个名为t1的线程。在线程中,我们使用Monitor.Enter方法获取锁,访问共享资源,然后使用Monitor.Exit方法释放锁。这样可以确保只有一个线程可以访问共享资源。最后,我们输出共享资源的值。
5.2 Vb中的网络编程
5.2.1 Vb中的Socket编程
Socket是网络编程中一个重要的概念,它是应用层与传输层之间的接口。在Vb中,可以通过Socket实现网络编程。下面是一个使用Vb实现Socket通信的示例:
- 创建Socket
在Vb中,可以使用System.Net.Sockets命名空间下的Socket类创建Socket对象。创建Socket对象时需要指定Socket的类型、协议、以及要使用的IP地址和端口号。例如:
5.2.1 TCP/IP协议
TCP/IP协议是在网络编程中常用的协议之一,它是一种面向连接的协议,能够保证数据传输的可靠性和顺序性。在Vb中,可以使用TcpClient和TcpListener类来实现TCP/IP协议的通信。其中,TcpClient类表示TCP客户端,可以向指定的IP地址和端口号发起连接,并发送数据;TcpListener类表示TCP服务器端,可以监听指定的端口号,接受客户端的连接请求,并接收客户端发送的数据。
5.2.2 UDP协议
UDP协议是另一种常用的协议,它是一种无连接的协议,不保证数据传输的可靠性和顺序性,但是具有较高的传输速度。在Vb中,可以使用UdpClient类来实现UDP协议的通信。UdpClient类表示UDP客户端,可以向指定的IP地址和端口号发送数据;同时也可以使用UdpClient类作为UDP服务器端,监听指定的端口号,接收客户端发送的数据。
5.2.3 Socket编程
Socket编程是一种通用的网络编程方法,可以支持多种协议和传输方式。在Vb中,可以使用Socket类来实现Socket编程。Socket类表示通用的套接字,可以通过设置不同的协议和传输方式,实现TCP/IP协议和UDP协议的通信。在使用Socket编程时,需要注意设置正确的协议和传输方式,以及处理异常情况,保证通信的可靠性和稳定性。
5.2.4 HTTP协议
5.2.2 HTTP协议
除了TCP/IP协议,Vb中还可以使用HTTP协议进行网络编程。HTTP协议是一种无状态的、面向文本的协议,它使用请求-响应模式进行通信。在Vb中,可以使用WebRequest和WebResponse类来实现HTTP协议的通信。WebRequest类可以发送HTTP请求并接收服务器端的HTTP响应,而WebResponse类则表示服务器端的HTTP响应。使用HTTP协议进行通信时,需要注意HTTP请求和响应的格式,例如GET请求和POST请求的区别,以及HTTP响应的状态码和响应头信息等。
5.2.3 WebSocket协议
WebSocket协议是一种全双工的协议,它可以在客户端和服务器端之间建立一个长连接,实现实时通信。在Vb中,可以使用WebSocket4Net库来实现WebSocket协议的通信。WebSocket4Net库提供了WebSocket类来表示WebSocket连接,可以通过WebSocket类发送和接收消息。使用WebSocket协议进行通信时,需要注意协议的握手过程和消息的格式,以及心跳包的发送和接收等。
5.3 Vb中的COM技术
5.3.1 COM技术概述
COM(Component Object Model)是一种面向对象的编程模型,它提供了一种通用的方式来定义、创建和使用可重用的组件。在VB中,COM技术被广泛应用于开发ActiveX控件和COM组件,这些组件可以被其他应用程序调用和使用。COM组件可以使用VB、C++等多种编程语言编写,可以在不同的操作系统上运行,也可以在不同的进程之间通信。
5.3.2 COM组件的创建和使用
在VB中,使用COM组件需要先创建一个COM对象,然后调用该对象的方法或属性。创建COM对象可以使用CreateObject函数或New关键字。CreateObject函数可以在运行时动态创建COM对象,而New关键字则需要在编译时指定对象的类型。
例如,下面的代码演示了如何使用CreateObject函数创建一个Excel对象,并将数据写入Excel工作簿:
Dim xlApp As Object Set xlApp = CreateObject("Excel.Application") xlApp.Workbooks.Add xlApp.Cells(1, 1).Value = "Hello World" xlApp.ActiveWorkbook.SaveAs "C:\Temp\Test.xlsx" xlApp.Quit
类似地,使用New关键字创建COM对象的代码如下:
Dim xlApp As New Excel.Application xlApp.Workbooks.Add xlApp.Cells(1, 1).Value = "Hello World" xlApp.ActiveWorkbook.SaveAs "C:\Temp\Test.xlsx" xlApp.Quit
在使用COM组件时,需要注意以下几点:
- 在使用CreateObject函数创建COM对象时,需要指定对象的ProgID(Program ID),该ID是COM组件在注册表中的唯一标识符。如果没有正确指定ProgID,将无法创建COM对象。
- 在使用New关键字创建COM对象时,需要在代码中引用COM组件的类型库(Type Library),以便编译器知道如何创建该对象。
- 在使用COM组件时,需要遵循COM的规范,包括使用正确的参数类型和返回值类型、正确处理COM异常等。
5.3.3 COM组件的注册和卸载
在使用COM组件时,需要将该组件注册到系统中,以便其他应用程序可以调用和使用该组件。注册COM组件可以使用Regsvr32.exe命令或Regasm.exe命令。Regsvr32.exe用于注册COM组件的DLL文件,而Regasm.exe用于注册.NET程序集中的COM组件。
例如,下面的命令将MyCom.dll文件注册到系统中:
Regsvr32.exe MyCom.dll
卸载COM组件可以使用Regsvr32.exe命令或Regasm.exe命令的/unregister选项。例如,下面的命令将MyCom.dll文件从系统中卸载:
Regsvr32.exe /u MyCom.dll
需要注意的是,卸载COM组件时可能会出现一些问题,例如组件正在被其他应用程序使用、组件的DLL文件不存在 5.3.1 COM技术概述
COM(Component Object Model)是一种面向对象的软件组件技术,它可以让不同的软件组件在不同的编程语言和操作系统中进行交互和通信。在Vb中,COM技术被广泛应用于开发ActiveX控件和COM组件。通常情况下,我们可以使用Vb来编写COM组件,然后在其他编程语言中进行调用和使用。COM技术的核心是接口(Interface)和对象(Object),通过定义接口和实现对象来实现不同组件之间的交互和通信。在Vb中,我们可以使用Interface关键字来定义接口,使用Class关键字来定义对象,然后通过实现接口和对象来实现组件之间的交互和通信。
5.3.2 COM技术在Vb中的应用
在Vb中,我们可以使用COM技术来开发ActiveX控件和COM组件,然后在其他编程语言中进行调用和使用。ActiveX控件是一种能够在Web页面中嵌入并与Web页面进行交互的控件,通常用于实现Web页面中的一些交互效果和功能。COM组件则是一种能够在不同的编程语言和操作系统中进行交互和通信的组件,通常用于实现一些独立的功能和模块。在Vb中,我们可以使用ActiveX控件向Web页面中添加交互效果和功能,也可以使用COM组件实现一些独立的功能和模块。通过使用COM技术,我们可以方便地将Vb代码与其他编程语言和操作系统进行集成和交互,提高代码的复用性和可维护性。
5.4 Vb中的.NET框架
5.4.1 Vb中的.NET框架
Vb是一种基于.NET框架的编程语言,它可以与其他.NET语言(如C#、F#等)进行交互。在Vb中,我们可以使用.NET框架提供的各种库和组件来实现各种功能。例如,我们可以使用System.IO命名空间中的类来进行文件操作,使用System.Net命名空间中的类来进行网络通信,使用System.Data命名空间中的类来进行数据库操作等等。此外,Vb还支持使用.NET框架提供的Windows Presentation Foundation(WPF)来创建现代化的图形用户界面。WPF提供了许多先进的功能,如动画、3D图形、触摸屏支持等等,可以让我们创建出更加美观、交互性更好的应用程序。总之,Vb中的.NET框架为我们提供了丰富的功能和组件,可以帮助我们更加高效地开发各种类型的应用程序。
总结
以上是Vb从入门到精通的大纲,通过本文档的学习,您可以系统地学习Vb编程的基础知识、面向对象编程、Windows编程、数据库编程以及高级主题。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/115630.html