精华内容
下载资源
问答
  • VB对象及其属性、事件和方法

    千次阅读 2020-09-15 12:41:57
    对象,是基于对现实世界的描述,对象是类的实例化,类是抽象的概念,而对象则是类的实际存在,对象是程序设计的基本实体,例如人是个类,而小明、小王则是类的实例化,是个具体的人,他就是人类的实例化对象。...

    应用程序的设计主要包括界面设计和代码设计两大部分。而界面设计实际就是对窗体和控件的设计。本节课程,我们开始学习VB6中的窗体及常用控件 。在学习控件之前,我们有必要先来熟悉对象的概念,以及对象的属性、事件和方法都需要有所了解。

    对象:

    不论是窗体还是控件,它们都属于对象。对象,是基于对现实世界的描述,对象是类的实例化,类是抽象的概念,而对象则是类的实际存在,对象是程序设计的基本实体,例如人是一个类,而小明、小王则是类的实例化,是一个具体的人,他就是人类的实例化对象。

    在VB中,对象分为系统预定义对象和用户自定义对象,工具箱中的控件以及窗体都属于预定义对象。在这些对象未被拖拽到窗体上时,都属于空对象,没有实体。当程序员将某个控件拖拽到窗体上,程序在运行时,将会自动将之实例化,变为实体。只有变成实体的对象,才能被使用,其属性、方法、事件也才能够被访问。

    对象的属性:

    属性是指一个对象的性质和特征。不同的对象,有不同的属性。例如姓名、年龄、性别都是人的属性,用于描述不同人的特征。只有对象被实例化后,才能使用其属性。

    在VB中,有一些属性是大部分对象都共有的属性。例如:Caption(标题)、Name(名称)、Color(颜色)、Height(高度)、width(宽度)等。

    设置属性的语句为:

    对象名.属性名称=属性值
    例如:设置窗体form1的标题为“一起学VB”。其语句为:

    form1.Caption="一起学VB"
    

    也可以直接在对象的属性窗口中设置。方法为:鼠标单击需要设置的对象,当对象被选中时,属性窗口将会变为该对象的属性,找到想要修改的属性,填写/选择自己需要的值即可。

        属性练习:
    

    目标:设计一个应用程序,当单击红灯按钮时,窗体变为红色,且窗体标题变为“红灯”;当单击绿灯按钮时,窗体变为绿色,且窗体标题变为“绿灯”。步骤如下:

     1,新建一个工程,在窗体form1上绘制两个命令按钮(Command1和Command2)。并在命令按钮对应的属性窗口中将Caption属性修改为“红灯”和“绿灯”。
    

    在这里插入图片描述

    2,分别双击红灯和绿灯按钮,进入对应代码区。并在它们的单击事件中写入如下代码:

    在这里插入图片描述

    3,按F5运行,测试程序。单击按钮即可改变对象的属性。效果如下图:

    在这里插入图片描述

    通过这个练习,相信大家对于对象的属性应该会有了一个全面的认识,每个对象的属性都有很多种,只有通过大量的练习,才能掌握每个对象的属性含义和用法。

    好啦,本节课程就到这里,下节课程将接着讲对象的事件和方法。

    展开全文
  • VB中的面向对象

    千次阅读 热门讨论 2019-10-13 09:56:19
    通过几天VB的深入学习,更加的深入了解了VB的使用方法。从中可以了解了VB的面向对象。 1.什么是VB呢?**它是基于美国微软的种...对象:在VB 中指的的是所有可见界面元素和大部分的硬件资源等等。(其中我们可以...

    通过几天VB的深入学习,更加的深入了解了VB的使用方法。从中可以了解了VB的面向对象。

    1.什么是VB呢?**它是基于美国微软的一种开发系统。VB是一种可视化的,面向对象的的设计程序。其中,什么是对象?对象面向对象是已对象为基础的,以事件驱动对象对事件进行处理的程序设计技术。
    在这里插入图片描述

    2.面向对象的三大要素:属性、事件、对象
    对象:在VB 中指的的是所有可见界面元素和大部分的硬件资源等等。(其中我们可以在对象框中去查找我们需要的对象)
    属性:对象本身固有的性质。(对象名.属性名=属性值
    事件:是指能够识别并作出反应的外部刺激。(分为系统事件和用户事件)同时我们可以在事件列表框中去找有哪些事件被使用。
    3.对象方法
    方法是完成特定功能的,如点击,打印等等。(对象名.方法名【参数1】【参数2】)
    4.举例来说:比如说你要去饭店吃饭,你只需要饭店,找到饭店的服务员,跟她说你要吃什么,然后就会给你做出来让你吃,你并不需要知道这个饭是怎么错做的,你只需要面向这个服务员,告诉他你要吃什么,然后他也只需要面向你吃完收到钱就好,不需要知道你怎么对这个饭进行吃。

    展开全文
  • VB.net学习笔记(六)VB.net的对象

    千次阅读 2013-07-30 21:34:04
    Dim a As theClass '1,用两语句来创建实例,先声明再实例化 a = New theClass() Dim b As New theClass()... Dim c As theClass = New theClass() '3,仅用个语句实例化,更能表明类型与创建,在接口/继承上更好用

    1、System.Object

           每个变量、控件、窗体都继承了System.Object





    2、对象的声明与实例化

         简单说声明,只是说明类型,实例化说明在内存中分配了空间。

        

          用New来创建对象,得到类的一个新实例

          下面有5种实例化形式,其中3较为标准且可读化高。

            Dim a As theClass   '1,用两语句来创建实例,先声明再实例化
            a = New theClass()
    
            Dim b As New theClass()  '2,仅一个语句实例化
    
            Dim c As theClass = New theClass() '3,仅用一个语句实例化,更能表明类型与创建,在接口/继承上更好用
    
    
            doSomeThing(New theClass())  ' 4,参数中创建实例
    
    
            doSomeThing(New theClass().getValue()) '5,参数中创建的同时调用其方法
            



    3、对象引用

         通常使用对象都是使用对象的引用。对象的引用(对象变量)本质上就是对象的指针就同C++的指针一样。

         当用New创建一个对象时,就会将对象的引用(指针)存储到一个变量中。


         下面是对象a,和b赋值时本质情况,在C++中被称为浅复制






    4、取消对象

          给一个对象引用赋值为Nothing时,就取消了这个对象的引用。

          经实验,Nothing实际上存储的是0,和C++一样给一个对象变量设置为0时,就取消它指向堆中分配的空间。

     

           这时.Net会知道:这个对象不再需要,运行库会在某时刻销毁该对象,收回内存及资源。因此在.Net删除对象

           之前,Framework会为该对象调用Finalize方法。





    5、前期绑定与后期绑定

          前期绑定:编译时就知道类型,故能准确地分配空间指定大小,运行速度快

          后期绑定:编译时不知道,只有运行时才知道,它提供了灵活性(但IntelliSense也就失效了),由于是运行时动态

                               分配所以速度慢。

           后期绑定容易出错,所以一般要配合Try....Catch...进行处理异常情况

           (option Strict  off就是可以后期绑定,默认)







    6、类型转换

         隐式转换与显式转换

         Cint,Clong....等是为了兼容由VB6转向VB.net,这并不是最佳的方式。


         VB.net提供了几个显式转换。


         (1)Convert转换类

            可用Convert.ToLong(变量)之类,把变量转换成Long型

            此类只能将已经一些基本类型已经明确知道类型纳入到其中的函数,并不能代表全部。


           注意:1、如果出现错误,将抛出异常。比如将负数转为非负的UInt32

                        2、共享方法MaxValue,MinValue勿需参数就可得到值如:Long.MaxValue


          (2)Parse、TryParse方法

             仅用于值类型,将字串转为相应的数值类型

                        result=Long.Parse("100")

              如果失败,将抛出异常,而异常会消耗额外的系统资源,影响性能。

              于是TryParse出场,它封装了异常处理,只返回是否成功的逻辑值,

               成功,返回True,失败为False,常用于转换前判断。

              dim a  as Long

               if   Long.TryParse("100", Long) then

                      b=a

                end if



             (3)Ctype函数

             默认Option  Strict是关闭的,因此是可以隐式转换,但如果开启了,一些转换就不能进行,就可以用Ctype指定。
             dim a as object=c
             dim b as string
             b=a     '若启option strict将出错,这时须指定为Ctype(a,string)


             CType若失败,将引发异常




           (4)DirectCast( a, b)函数
             把a转为b类型,仅用于引用类型且用于假定可以直接转换的,不能对转换数据执行额外的处理,即不具有主动性。
             常用于具有继承关系的类型。失败将产生异常。


              如果说CType是智能体,可以转换任意类型,那么DirectCast只能转换具用继承判断的引用型






              (5)TryCast
                 TryCast与DirectCast类似,不同的时,因封装了异常处理,它不会抛出异常。
                 如果成功,返回正确转换后的类型;
                 如果失败,返回Nothing
                 
                 TryCast用于继承等的引用类型,不会抛出异常。





    ===========================================================================================




    对象是由类产生,对象是类的一个实例。


    1、创建类

          用Class关键字来创建类

          Pulbic  Class  Person

                  ...................'Code

          End Class


         最常见的是每个文件只包含一个类。

         

         注意:我们可以发现一个简单的窗体程序就只有一个类,而没有什么实例产生,或运行。

                     这是什么原因呢?

          原来:首先启动窗体时候已经实例化了一个对象,该对象会有一个线程,通常我们称为UI始终监视信息泵系统,

                     如果接受到类似的拖动,点击,重绘信息,消息泵就会去通知UI,让UI来处理





    2、字段

          字段即C++的数据成员,是用来存储数据的。每产生一个对象都会产生一个字段的副本。

          注意关键字的作用域 :

              Private      私有,只能用于类中代码

              Public       公有,类内类外的任何程序集的的任何项目都可使用

              Protected   保护,只用于该类继承的类

              Friend       友元,只能用于项目或组件的代码

              Protected Friend    用于项目或组件的代码以及项目内或项目外从该类继承的类

    Public Class People
        Private mName As String   '字段,即数据成员
        Private mBirthday As Date
    
    End Class




    3、方法

            方法是类的方法成员,由sub或function等来完成对数据成员的操作,或对外部的一处理。

            sub  是不用返回值

            function   需返回值,返回值在代码中用return来指明,或者用方法名(函数名)赋值取得

        Public Function Age() As Int32
            Return CInt(DateDiff(DateInterval.Year, mBirthday, Now())) '用return返回值
        End Function
    
        Public Function Age() As Int32
            Age = CInt(DateDiff(DateInterval.Year, mBirthday, Now())) '用方法名取得返回值
        End Function



    4、方法的作用域

           方法前面的关键字用来指明方法的作用域

            它与字段的作用域一样。比如:

            Friend的方法,表明对于 项目内的代码这是对象接口的一部分,但使用该程序集的其它应用程序或项目不能调用。

      




    5、方法的参数

         参数与前面的sub,Function一样。

         对于值传递用byval,或用引用传递使用ByRef,这样在方法中更改其值,可使原值发生变化。     

        Public Class People
            Private mName As String   '字段,即数据成员
            Private mBirthday As Date
            Private mTotalDistance As Int32
    
            Public Sub Walk(ByVal distance As Int32) '若需改变外部distance值,这里可改byval为byref
                mTotalDistance += distance
            End Sub
    
            Public Function Age() As Int32
                Return CInt(DateDiff(DateInterval.Year, mBirthday, Now())) '用return返回值
            End Function
    
        End Class






    6、属性

         .net提供了一种特殊的方法,称属性,使用关键字Property。

         本质上它还是方法,只是为了分类、理解更容易,结合前面的字段(数据成员),提供一种新的方法称属性。

          比如前面的字段mName ,如果设置成Public,原理上可以的,但和我们设计类的封闭性违背。

          这种情况一般用一个方法来代码对字段的直接操作,而原字段设置成Private,就完善了对数据封装的概念。


          由于常用这个的方法来操作较为频繁,于是设计成一个Property属性(方法)来代替,用Get实现读取字段,

          用Set来实现给字段赋值。

          这样有几个好处:

           1、完善了类的封装;

            2、实现了对字段值的过滤,比如赋值时,如果是负数(不允许为负时)可以在代码中提示。

            3、细化了字段的读和写,有时只准读,有时只准写,这样分类进行限制。

            4、对范围进行限制,有些只准在项目内使用,有些可以。(用Friend来限制)

          例:下面是一个属性的定义

        Public Property mName() As String
            Get
                Return mName
            End Get
            Set(value As String)
                mName = value
            End Set
        End Property

          注意:1、属性名和字段名各不相关,可以相同,也可以不同(最好设置不同,例中为相同)

                            尽管属性中操作的是一个(或多个)字段,只有明白内部的代码才能知道对应的是哪个字段。

                            而在对象中显示属性成员的名字时,是属性名而不是字段名!!!

                             例中mName属性与字段mName并不相关,对生成的对象成员中显示的属性名。

                       2、对于一般不须限制的属性可以直接用下面简化成一句即可。  

    Public Property mName() As String

                               效果与 Public  mName as String一样

                    

                       这个功能叫“自动实现的属性”。MSDN描述如下:

                     “自动实现的属性”使您可以快速指定类的属性,而无需编写代码对该属性执行 Get 和 Set 操作。
                     通过自动实现的属性,可在一行中声明一个包含默认值的属性。

    Public Property Name As String
    Public Property Owner As String = "DefaultName"
    Public Property Items As New List(Of String) From {"M", "T", "W"}
    Public Property ID As New Guid()
                   在声明自动实现的属性时,Visual Basic 会自动创建一个隐藏的私有字段(称为“支持字段”)来包含该属性的值。

                   支持字段名称是在自动实现的属性的名称前面加下划线 (_)。 

                  例如,如果声明一个名为 ID 的自动实现的属性,则支持字段的名称为 _ID。

                  如果有一个类成员的名称也是 _ID,则会产生命名冲突并且 Visual Basic 会报告编译器错误。


                此外,支持字段还具有下列特性:
                    支持字段的访问修饰符始终为 Private,即使该属性本身具有不同的访问级别(如 Public)也是如此。
                   如果该属性标记为 Shared,则支持字段也是共享的。
                  为该属性指定的特性不应用于支持字段。
                    可从类中的代码以及从监视窗口等调试工具中访问支持字段。 但是,支持字段不会显示在 IntelliSense 文字完成列表中。

               必须改用标准的“扩展”属性语法(此时不能用自动实现的属性功能)。
              如果要执行下列任一操作,则必须使用扩展属性定义语法:
                     向属性的 Get 或 Set 过程添加代码,如用于验证 Set 过程中的传入值的代码。 例如,在设置属性值之前,您可能希望验证一个表示电话号码的字符串是否包含所需数目的数字。
                    为 Get 和 Set 过程指定不同的可访问性。 例如,您可能希望将 Set 过程设为 Private,将 Get 过程设为 Public。
                    创建 WriteOnly 或 ReadOnly 属性。
                    使用参数化属性(包括 Default 属性)。 若要为属性指定参数,或者为 Set 过程指定附加参数,必须声明扩展属性。
                    为支持字段设置特性,或者更改支持字段的访问级别。
                   为支持字段提供 XML 注释。
                  

            下例是限制赋值时,只能在项目内生效,项目外不能赋值。

        Public Property mName() As String
            Get
                Return mName
            End Get
            Friend Set(value As String) '仅限于项目内使用
                mName = value
            End Set
        End Property






    7、参数化属性

          属性有可能是单一值,也可是多个值(属性数组、参数化属性)。

          这样,它可以为某些设置一个可选范围,或者成一个数组,如:电话号码可存储多值。

         为此,我们可以把mPhone电话号码属性设置成哈希表类型。

         例:   参数是“索引”

       Private mPhones As New Hashtable '哈希表类(集合)
        Public Property Phone(ByVal location As String) As String '参数类似索引在哈希表中定位
            Get
                Return mPhones.Item(location)
            End Get
            Set(value As String)
                If mPhones.ContainsKey(location) Then '判断是否已经有此索引
                    mPhones.Item(location) = value    '有,直接更新值
                Else
                    mPhones.Add(location, value)       '无,加入索引及值
                End If
            End Set
        End Property

            注:哈希表,本质上同数组相同,都是通过“索引”来取得或设置值。但数组是“数值”型的索引,而哈希表索引可以是其它类型

                   比如字符串,数组是连接存储,哈希表是通过“索引”(关键字)映射取得。

                    另外,哈希表比数组灵活,但更浪费空间。






    8、只读属性、只写属性

            正如前面所说,在Property前加入ReadOnly(只读)或WriteOnly(只写),就可限制对属性的操作。

            如:

             Public  WriteOnly  Property   Amber() as int32

                      set(ByVal  Value  As integer)     ‘只读,当然只有Set而没有Get

                                  mAmber=Value

                       End Set

               End  Property





    9、默认属性

          对象可以实现默认属性,用它时,不用指明属性,会自动赋值或获取对应的某属性。

          这时,须用Default来指明某属性是默认的属性。例:


        Private mPhones As New Hashtable
        Default Public Property Phone(ByVal location As String) As String '用default表示这个属性当作对象的默认值
            Get
                Return mPhones.Item(location)
            End Get
            Set(value As String)
                If mPhones.ContainsKey(location) Then
                    mPhones.Item(location) = value
                Else
                    mPhones.Add(location, value)
                End If
            End Set
        End Property
        '================================================================================
        Dim myPerson As New People
        myPerson.Phone("home")="12345678" '没有指定为默认属性时,必须这样明确指明属性
        myPerson("home")="12345678"       '一旦指明默认属性为phone时,可简化成此句,自动知道是Phone属性

            默认属性必须是带参数的属性,不带参数的属性不能为默认值。

           猜想是不是不带参数时,VB.net无法判断是隐式的类型转换还是给默认属性进行赋值?对否?

          


    展开全文
  • VB 中 FSO 对象模型介绍

    千次阅读 2013-12-22 00:25:14
     从 Visual Basic 的第版至今,VB 中有关文件的处理都是通过使用 Open 、Write 以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应...

    在 VB 中应用 FSO 对象模型介绍  

            从 Visual Basic 的第一版至今,VB 中有关文件的处理都是通过使用 Open 、Write 以及其它一些相关的语句和函数来实现的。随着软件技术的不断发展,加上面向对象编程概念的日臻成熟,这些文件操作语句已经不能适应软件不断增加的复杂程度的需要了。因此,从 VB 6.0 开始,微软提出了文件系统对象。

     

    一、File System Object 模型介绍

            文件系统对象,英文名 File System Object,简称 FSO 对象模型,该模型提供了一个基于对象的工具来处理文件夹和文件。这使您除了使用传统的 Visual Basic 语句和命令之外,还可以使用您所熟悉的带有一整套属性、方法和事件的 object.method 语法来处理文件夹和文件。

             FSO 对象模型使应用程序能够创建、改变、移动和删除文件夹,或者检测是否存在指定的文件夹,并能获取文件夹的路径。FSO 对象模型也能使您获取关于文件夹的信息,诸如名称、创建日期或最近修改日期等等。

             FSO 对象模型也使得对文件的处理变得更加简单。在处理文件时,首要目标就是以一种可以有效利用空间和资源,并且易于存取的格式来存储数据。需要能够创建文件、插入和修改数据、以及输出(读)数据。虽然可以将数据存储在诸如 Jet 或 SQL 这样的数据库中,但是这样做将在应用程序中加入相当数量的额外开支。出于多种原因,您不想有这样的额外开支,或者数据存取要求不需要用一个与全功能数据库关联的所有额外功能,在这种情况下,用二进制或文本文件来存储数据是最有效的解决方法。FSO 对象模型支持通过 TextStream 对象创建和操作文本文件。但是,它还不支持二进制文件的创建和操作。要操作二进制文件,请使用带 Binary 标志的 Open 命令。

     

    二、File System 对象介绍

    1、Drive 对象:

             允许收集关于系统所用的驱动器的信息,诸如驱动器有多少可用空间,其共享名称是什么,等等。请注意,一个“驱动器”并不一定是一个硬盘,它可以是 CD-ROM 驱动器、RAM 盘等等。而且,驱动器不一定是和系统物理地连接,也可以通过一个 LAN 进行逻辑地连接。

     2、Folder 对象:         允许创建、删除或移动文件夹,并向系统查询文件夹的名称、路径等。

     3、Files 对象:         允许创建、删除或移动文件,并向系统查询文件的名称、路径等。

     4、FileSystemObject 对象:

             该组的主要对象,提供一整套用于创建、删除、收集相关信息,以及通常操作驱动器、文件夹和文件的方法。与本对象相关联的很多方法复制了其它对象中的方法。

     5、TextStream 对象:         允许您读写文本文件。

     

    三、如何用 FSO 对象模型编程

     

    1、FSO 对象模型编程的主要任务

              (1)使用 CreateObject 方法,或将一个变量声明为 FileSystemObject 对象类型来创建一个 FileSystemObject 对象。
             (2)对新创建的对象使用适当的方法。
             (3)访问该对象的属性。

              注意:FSO 对象模型包含在一个称为 Scripting 的类型库中,此类型库位于 Scrrun.Dll 文件中。如果还没有引用此文件,请从“属性”菜单的“引用”对话框选择“Microsoft Scripting Runtime”项,然后就可以使用“对象浏览器”来查看其对象、集合、属性、方法、事件以及它的常数。

     

    2、创建 FileSystemObject 对象

              创建 FileSystemObject 对象,可以通过如下两种方法完成:

              将一个变量声明为 FileSystemObject 对象类型:

     Dim fso As New FileSystemObject

             使用 CreateObject 方法来创建一个 FileSystemObject 对象:

     Set fso = CreateObject("Scripting.FileSystemObject")

              注意:在上面的语法中, Scripting 是类型库的名称,而 FileSystemObject 则是想要创建一个实例的对象的名称。第一种方法只在 Visual Basic 中有效,而第二种方法在 Visual Basic 或 VBScript 中都是可行的。

     

    3、使用适当的方法

              例如,如果想要创建一个新对象,既可以使用 CreateFolder 方法也可以使用 CreateTextFile 方法。(FSO 对象模型不支持创建或删除驱动器。)如果想要删除对象,可以使用 FileSystemObject 对象的 DeleteFile 和 DeleteFolder 方法,或者 File 和 Folder 对象的 Delete 方法。使用适当的方法,还可以复制、移动文件和文件夹。

              注意:FileSystemObject 对象模型中有一些功能是冗余的。例如,要复制一个文件,既可以使用 FileSystemObject 对象的 CopyFile 方法,也可以使用 File 对象的 Copy 方法。这两者的功能是完全相同的,两者同时存在可以提供最大的编程灵活性。

     

    4、访问已有的驱动器、文件和文件夹

             要访问一个已有的驱动器、文件或文件夹,请使用 FileSystemObject 对象中相应的“get”方法,包括 GetDrive、GetFolder 和 GetFile。例如:

              Dim fso As New FileSystemObject, fil As File
             Set fil = fso.GetFile("c:\test.txt")

              注意:并不需要对新创建的对象使用“get”方法,因为“create”函数已经返回了一个句柄到新创建的对象。例如,如果使用 CreateFolder 方法创建了一个新的文件夹,就没有必要使用 GetFolder 方法来访问该对象的诸如名称、路径、大小等属性,只要给 CreateFolder 函数设置一个变量来获取新建文件夹的句柄,然后就可以访问其属性、方法和事件。例如:

     

    Private Sub Create_Folder()
       Dim fso As New FileSystemObject, fldr As Folder
       Set fldr = fso.CreateFolder("C:\MyTest")
       MsgBox "Created folder: " & fldr.Name
    End Sub

     

    5、访问对象的属性

              一旦有了对象的句柄,就能够访问其属性。例如,假定您想要获得一个特定文件夹的名称。首先要创建该对象的一个实例,然后通过适当的方法(在本例中是 GetFolder 方法,因为该文件夹已经存在)得到其句柄:

     Set fldr = fso.GetFolder("c:\")

              现在有了一个 Folder 对象的句柄,您可以查看其 Name 属性:

     Debug.Print "Folder name is: "; fldr.Name

              如果想要找出一个文件的最新修改时间,可以使用如下的语法:

     Dim fso As New FileSystemObject, fil As File
    Set fil = fso.GetFile("c:\detlog.txt") ' 获得要查询的 File 对象。
    Debug.Print "File last modified: "; fil.DateLastModified ' 显示信息。

     

    四、使用驱动器和文件夹

              可以在程序中使用 FSO 对象模型来处理驱动器和文件夹,例如复制和移动文件夹、获得驱动器和文件夹的信息,等等。

     1、获得驱动器的信息

              Drive 对象允许获得一个系统的各个驱动器的信息,这些驱动器可以是物理的,也可以是位于网络上的。通过该对象的属性可以获得下列信息:

              (1)以字节表示的驱动器总空间(TotalSize 属性)
             (2)以字节表示的驱动器可用空间(AvailableSpace 或 FreeSpace 属性)
             (3)给驱动器指定的字母号(DriveLetter 属性)
             (4)驱动器类型,诸如可移动的、固定的、网络、CD-ROM、或者 RAM 盘(DriveType 属性)
             (5)驱动器序列号(SerialNumber 属性)
             (6)驱动器使用的文件系统类型,诸如 FAT、 FAT32、 NTFS等等(FileSystem 属性)
             (7)驱动器是否可用(IsReady 属性)
             (8)共享和/或卷标的名称(ShareName 和 VolumeName 属性)
             (9)驱动器的路径或根文件夹(Path 和 RootFolder 属性)

     

    2、Drive 对象用法示例

              下列示例说明了如何使用 Drive 对象来收集有关驱动器的信息。请记住,在下面的代码中并没有对一个实际 Drive 对象的引用,而是使用 GetDrive 方法来获得一个对已有 Drive 对象(本例中就是 drv)的引用:

     Private Sub Command3_Click()
       Dim fso As New FileSystemObject, drv As Drive, s As String
       Set drv = fso.GetDrive(fso.GetDriveName("c:"))
       s = "Drive " & UCase("c:") & " - "
       s = s & drv.VolumeName & vbCrLf
       s = s & "Total Space: " & FormatNumber(drv.TotalSize / 1024, 0)
       s = s & " Kb" & vbCrLf
       s = s & "Free Space: " & FormatNumber(drv.FreeSpace / 1024, 0)
       s = s & " Kb" & vbCrLf
       MsgBox s
    End Sub

     

    3、使用 CurDir、 ChDrive、 ChDir 或 App.Path

              如果使用 CurDir 函数、ChDrive 和 ChDir 语句、或者 Path 属性(App.Path),请注意,它们返回的有可能是一个 UNC 路径(形如 \\Server\Share,而不是一个驱动器路径 E:\Server\Share),这取决于运行程序或工程的方式。

              在如下的情况,App.Path 返回一个 UNC 路径:

              (1)当运行一个从共享网络加载的工程时,即使该网络共享已经被映射到一个驱动器号。
             (2)当从一个共享网络运行一个已编译的可执行文件时(但是仅当通过一个 UNC 路径运行该程序)。

              ChDrive 不能处理 UNC 路径,因此当 App.Path 返回一个 UNC 路径给 ChDrive 时,就会产生一个错误。要避免这个错误,可以在 ChDrive 语句之前添加 On Error Resume Next,或者测试 App.Path 的头两个字符是否是反斜杠。例如:

              On Error Resume Next
             ChDrive App.Path
             ChDir App.Path

              这个改动将处理所有使用 UNC 路径从 Windows 启动程序(例如,在“启动”菜单的“运行”对话框中)的情况,因为 Windows 将当前的目录设为一个 UNC 路径。ChDir 可以正确地处理 UNC 路径之间的转换。(ChDrive 的失效可以被忽略,因为 UNC 路径当中没有驱动器号)

              然而,如果在 MS-DOS 的命令行提示符后键入一个 UNC 路径来运行程序的话,上面的代码不会生效。这是因为命令行提示符用的总是当前目录的驱动器路径,所以 CurDir 被设为一个驱动器路径。ChDir 不会产生错误,但是它不能将一个目录从驱动器路径变为 UNC 路径。在这种情况下,唯一的解决办法是定位一个已经映射为 UNC 路径中指定共享的本地驱动器,或者使用网络命令来创建这样一个映射。

              如果工程是从一个网络共享加载到 Visual Basic 集成开发环境(IDE)中的话,那么当运行工程时 App.Path 将返回一个 UNC 路径,而且ChDrive 失败并产生一个错误。ChDir 虽然不会出错,但目录并未改变。唯一的解决办法是通过手工来设置驱动器和目录。例如:

     Const PROJECTSHARE = "E:\VBPROJ\MYPROJECT"
    #Const Debug = True
    #If Debug Then
        ChDrive PROJECTSHARE
        ChDir PROJECTSHARE
    #Else
        On Error Resume Next
        ChDrive App.Path
        ChDir App.Path
    #End If

              如果不止一个人可能在共享网络上打开该工程,那么可以使用一个 DOS 环境变量来允许每个人都拥有自己对该共享的映射。例如:

     #Const Debug = True
    #If Debug Then
        ChDrive Environ("MYPROJECTDIR")
        ChDir Environ("MYPROJECTDIR")
    #Else
        On Error Resume Next
        ChDrive App.Path
        ChDir App.Path
    #End If

              MYPROJECTDIR 的值指定了被映射的驱动器号和路径,例如:

              SET MYPROJECTDIR=M:\VBProj\MyProject

     

    4、使用文件夹

              下面列出了普通的文件夹任务以及完成这些任务的方法:

              (1)创建一个文件夹:FileSystemObject.CreateFolder 
             (2)删除一个文件夹:Folder.Delete 或 FileSystemObject.DeleteFolder 
             (3)移动一个文件夹:Folder.Move 或 FileSystemObject.MoveFolder 
             (4)复制一个文件夹:Folder.Copy 或 FileSystemObject.CopyFolder 
             (5)检索文件夹的名称:Folder.Name 
             (6)查找一个文件夹是否在驱动器上:FileSystemObject.FolderExists 
             (7)获得已有Folder对象的一个实例:FileSystemObject.GetFolder 
             (8)找出一个文件夹的父文件夹的名称:FileSystemObject.GetParentFolderName 
             (9)找出系统文件夹的路径:FileSystemObject.GetSpecialFolder

     例子:

              如何使用 Folder 对象和 FileSystemObject 对象来操作文件夹并获得其信息:

     Private Sub Command1_Click()
                ' 获得 FileSystemObject 的实例。
                Dim fso As New FileSystemObject, fldr As Folder, s As String
                ' 获取 Drive 对象。
                Set fldr = fso.GetFolder("c:")
                ' 显示父文件夹名。
                Debug.Print "Parent folder name is: " & fldr
                ' 显示驱动器名。
                Debug.Print "Contained on drive " & fldr.Drive
                ' 显示根文件名。
                If fldr.IsRootFolder = True Then
                            Debug.Print "This folder is a root folder."
                Else
                            Debug.Print "This folder isn't a root folder."
                End If
                ' 用 FileSystemObject 对象创建一个新的文件夹。
                fso.CreateFolder ("c:\Bogus")
                Debug.Print "Created folder C:\Bogus"
                ' 显示文件夹的基本名称。
                Debug.Print "Basename = " & fso.GetBaseName("c:\bogus")
                ' 删除新建的文件夹。
                fso.DeleteFolder ("c:\Bogus")
                Debug.Print "Deleted folder C:\Bogus"
    End Sub

     

    五、使用文件

              通过使用新的面向对象的 FSO 对象,诸如 Copy、 Delete、 Move 以及 OpenAsTextStream,或者使用传统的函数,诸如 Open、 Close、 FileCopy、 GetAttr 等等,您可以使用 Visual Basic 中的文件。请注意,不用考虑其文件类型就可以移动、复制或删除文件。

     1、用 File System Objects 创建文件并添加数据

              有三种不同方法来创建一个顺序文本文件(有时被称为“文本流”)。

              (1)使用 CreateTextFile 方法。例如:

              Dim fso As New FileSystemObject, fil As File
             Set fil = fso.CreateTextFile("c:\testfile.txt", True)

              注意:FSO 对象模型尚不支持创建随机文件或二进制文件。要创建随机文件和二进制文件,请使用带 Random 或 Binary 标志的 Open 命令。

     (2)使用 OpenTextFile 方法。例如:

              Dim fso As New FileSystemObject, ts As New TextStream
             Set ts = fso.OpenTextFile("c:\test.txt", ForWriting)

     (3)使用带 ForWriting 标志设置的 OpenAsTextStream 方法。例如:

              Dim fso As New FileSystemObject, fil As File, ts As TextStream
             Set fso = CreateObject("Scripting.FileSystemObject")
             fso.CreateTextFile ("test1.txt")
             Set fil = fso.GetFile("test1.txt")
             Set ts = fil.OpenAsTextStream(ForWriting)

     2、添加数据到文件

              文本文件一经创建,就可以分三步向其中加入数据:

              (1)打开文本文件以备写入数据。
             (2)写入数据。
             (3)关闭文件。

              要打开文件,可以使用 File 对象的 OpenAsTextStream 方法,或者 FileSystemObject 对象的 OpenTextFile 方法。

              要向打开的文本文件中写入数据,可以使用 TextStream 对象的 Write 或 WriteLine 方法。它们之间的唯一差别是 WriteLine 在指定的字符串末尾添加换行符。

              如果想要向文本文件中添加一个空行,请使用 WriteBlankLines 方法。

              要关闭一个已打开的文件,请使用 TextStream 对象的 Close 方法。

              下面这个例子示范了如何打开一个文件,使用上述三种写入方法向该文件中添加数据,然后关闭文件:

     Sub Create_File()
        Dim fso, txtfile
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
        txtfile.Write ("这是一个测试例子。") ' 写入一行。
        ' 写入一行带有换行符的文本。
        txtfile.WriteLine("Testing 1, 2, 3.")
        ' 向文件中写入三个换行符。
        txtfile.WriteBlankLines(3)
        txtfile.Close
    End Sub

     

    3、使用 File System Objects 读取文件

              要从一个文本文件中读取数据,请使用 TextStream 对象的 Read、 ReadLine 或 ReadAll 方法。

        1、Read 方法:从一个文件中读取指定数量的字符
        2、ReadLine 方法:读取一整行(不包括换行符)
        3、ReadAll 方法:读取一个文本文件的所有内容

              如果使用 Read 或 ReadLine 方法并且想要跳过数据的某些部分,可以使用 Skip 或 SkipLine 方法。

              这些读取方法产生的文本被存储在一个字符串中,而这个字符串可以在一个控件中显示,也可以被字符串操作符分解(诸如 Left、 Right 和 Mid)、合并等等。

              注意:vbNewLine 常数包含一个或多个字符(取决于操作系统)使得光标移至下一行的开头(回车/换行)。请注意,有的字符串末尾可能有这样的非打印字符。

     例子:

     Sub Read_Files()
        Dim fso As New FileSystemObject, txtfile, _
          fil1 As File, ts As TextStream
        Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
        MsgBox "正在写入文件"
        ' 写入一行。
        Set fil1 = fso.GetFile("c:\testfile.txt")
        Set ts = fil1.OpenAsTextStream(ForWriting)
        ts.Write "Hello World"
        ts.Close
        ' 读取文件的内容。
        Set ts = fil1.OpenAsTextStream(ForReading)
        s = ts.ReadLine
        MsgBox s
        ts.Close
    End Sub

     

    4、移动、复制和删除文件

              对文件的移动、复制和删除,FSO 对象模型都提供了两种方法:

              (1)移动一个文件:File.Move 或 FileSystemObject.MoveFile 
             (2)复制一个文件:File.Copy 或 FileSystemObject.CopyFile 
             (3)删除一个文件:File.Delete 或 FileSystemObject.DeleteFile

              例子:

              本例先在 C 盘的根目录下创建了一个文本文件,并向其中写入一些信息,然后将该文件移至一个名叫 \tmp 的目录,并复制到一个叫 \temp 的目录下,最后删掉该文件在这两个子目录下的拷贝。要运行本例,请先确认在C盘的根目录下已经存在名叫 \tmp 和 \temp 的目录。

     Sub Manip_Files()
        Dim fso as New FileSystemObject, txtfile, fil1, fil2
        Set txtfile = fso.CreateTextFile("c:\testfile.txt", True)
        MsgBox "写入文件"
        ' 写入一行。
        txtfile.Write ("这是一个测试例子。")
        ' 关闭要写入的文件。
        txtfile.Close
        MsgBox "移动文件到 c:\tmp"
        ' 获得C盘根目录下的一个文件句柄。
        Set fil1 = fso.GetFile("c:\testfile.txt")
        ' 将该文件移至 \tmp 目录下。
        fil1.Move ("c:\tmp\testfile.txt")
        MsgBox "复制文件到 c:\temp"
        ' 将该文件复制到 \temp 目录下。
        fil1.Copy ("c:\temp\testfile.txt")
        MsgBox "删除文件"
        ' 获得这些文件当前位置的句柄。
        Set fil1 = fso.GetFile("c:\tmp\testfile.txt")
        Set fil2 = fso.GetFile("c:\temp\testfile.txt")
        ' 删除这些文件。
        fil1.Delete
        fil2.Delete
    MsgBox "全部完成!"

     

    六、总结

              通过上面的介绍,我们可以看到,FSO 对象模型在传统的文件操作之外,提供了一种更方便、功能更强大的操作方法。不过,我们还需要注意到 FSO 对象模型目前还不完善,当前使用的 FSO 对象模型还不支持创建随机文件或二进制文件。要创建随机文件和二进制文件,仍然要使用带 Random 或 Binary 标志的 Open 命令。但从目前 FSO 对象模型的实际应用来看,我们仍然可以将 FSO 对象模型作为一种比较简便的文件操作解决方案。

    1 Print 判断光驱的盘符

    Function GetCDROM() ' 返回光驱的盘符(字母)
        Dim Fso As New FileSystemObject '创建 FSO 对象的一个实例
        Dim FsoDrive As Drive, FsoDrives As Drives '定义驱动器、驱动器集合对象
        Set FsoDrives = Fso.Drives
        For Each FsoDrive In FsoDrives '遍历所有可用的驱动器
            If FsoDrive.DriveType = CDRom Then '如果驱动器的类型为 CDrom
                GetCDROM = FsoDrive.DriveLetter '输出其盘符
            Else
                GetCDROM = ""
            End If
        Next
        Set Fso = Nothing
        Set FsoDrive = Nothing
        Set FsoDrives = Nothing
    End Function

    2 .判断文件?文件夹是否存在

    '返回布尔值:True 存在,False 不存在,filername 文件名
    Function FileExist(filename As String)
        Dim Fso As New FileSystemObject
        If Fso.FileExists(filename) = True Then
            FileExist = True
        Else
            FileExist = False
        End If
    Set Fso = Nothing

    展开全文
  • VB面向对象的三要素理解。

    千次阅读 热门讨论 2019-10-13 11:02:20
    VB就是使用了面向对象程序设计(OOP)方法,从根本上改变了之前的“面向过程的程序设计”。oop是以对象为基础。纪事件驱动对象对事件进行处理的程序设计技术。 在VB中,所有可见的界面元素和大部分的硬件资源 都可...
  • VB对象是什么

    千次阅读 2011-06-23 15:46:03
    对象是代码和数据的组合,...对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。下表列出了在 Visual Basic 中可能用到的几种类型的对象: 示例 描述 命令按钮 ...
  • VB6中的对象事件与事件过程(4)

    千次阅读 2020-04-07 20:46:21
    个迟到的学生这个对象,当听到上课铃声这个事件,学生这个对象做出的反应,即对事件的处理过程就是向教室急跑。 在VB中的对象事件是什么 在VIsualBasice应用程序中,对象事件是由VisualBasic预先定义好的,...
  • VB中的全局对象

    千次阅读 2012-07-17 21:31:49
    VB中的全局对象 全局对象的定义:个类只有唯一的个实例,这个实例统称为全局对象。 全局对象的特点:全局对象在程序中不需要声明和定义,直接使用就可以了。 VB中的全局对象主要有哪些? VB下的全局...
  • 面向对象技术最初是从面向对象程序设计语言开始的,面向对象的应用不仅深入到软件开发方法、操作系统、数据库,甚至到硬件设计,无疑,面向对象技术已经是思维科学中的项工程技术。  Ø 面向对象的特点  1....
  • 今天写代码时,要写个带返回值的方法,如下: '更新数据库操作 Public Function ExecuteCommand(ByVal strSql As String, _ ByVal dbcn As ADODB.Connection, _ Optional ByVal cmdType As ADODB.Co
  • 摘要:语音识别技术的发展和广泛应用,使用户与计算机的对话方式不再仅仅局限在使用键盘或鼠标发送指令的...VB6.0 1 引言 随着计算机技术的飞速发展,用户与计算机对话的方式由机器语言指令,到图形用户界面,现...
  • VB FileSystemObject对象 详解

    万次阅读 2013-04-03 17:10:17
    FileSystemObject对象被用来访问服务器上的文件系统...下面的代码创建了个文本文件,并写入了一些文本:    dim fs,fname  set fs=Server.CreateObject("Scripting.FileSystemObject")  set fname=fs.CreateT
  • VB.NET小结——再聊面向对象

    千次阅读 热门讨论 2014-04-29 17:27:54
    对于第代1和0,要是真的用它们变成的话,我...当进入了面向对象阶段,感觉是个解放哎~ 如果一路学过这些语言,这种感觉就像是感慨人类社会的进化一样,从原始社会,到奴隶社会,到封建社会,再到现代社会,最根本的变
  • 什么是类、对象、属性、方法、类的成员

    万次阅读 多人点赞 2018-01-31 11:12:05
    类:具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、神; 对象:日常生活中的所有东西都是对象,是类的实例化。比如说:推土车是汽车的实例化...方法:每个对象有它们自己的行为或者是使用它们的方
  • VB6对象浏览器的用法

    千次阅读 2013-07-27 02:11:00
    估计不少书都把这个强大的工具忽略了,这里补充一下。在VB6的IDE里按下F2,或者选择【视图】菜单的【对象浏览器】菜单项,就可以打开对象浏览器。对象浏览器可以看到个库中的全部类,模块,枚举的定义。
  • VB APP对象属性一览表+灵活使用VB的APP对象  2010-10-15 08:18:44| 分类: Vb | 标签: |字号大中小 订阅 ●适用于VB ●用法:传回值 = App.属性 -----------------------------------------...
  • VB操作EXCEL表的常用方法

    万次阅读 多人点赞 2019-01-07 17:39:12
    VB是常用的应用软件开发工具之,由于VB的报表功能有限,而且但报表格式发生变化,就得相应修改程序,给应用软件的维护工作带来极大的不便。因此有很多程序员现在已经充分利用EXECL的强大报表功来实现报表功能。...
  •   vb6中存在几个虚幻的值:Null、Missing、Empty、Nothing、vbNullString。除了最后个之外,每个值都不能直接用“a=值”来判断。下面分别解释一下这几个值的含义。 1、Null Null指个不合法的数据,判断...
  • 简要分析VB6.0和VB.NET区别

    千次阅读 2019-05-07 10:27:54
    现在随着VB.NET的发展,大部分人都放弃使用VB6.0而选择VB.NET,下面我们就来研究一下VB6.0和VB.NET的区别。VB.NET是微软公司在2002年推出的种开发基于.Net平台应用程序的开发语言,也是微软公司极力推荐的种开发...
  • VB接口的使用方法

    千次阅读 热门讨论 2015-08-16 10:41:47
    也就是说,接口只是个抽象概念。比如我们说车可以跑,人可以跑,马可以跑。我们可以看到实例化的车、人、马。但是我们可以定义个“会跑的物质”。它可以是车,也可以使人、马,但是我们却不能说“这个东西就是...
  • VB6中的面向对象编程---实现类继承

    千次阅读 2017-10-21 16:30:11
    VB中Implements的作用 所需的 InterfaceName 或 Class 是类型库中的接口或类的名称,该类型库中的方法将用与 Visual Basic 类中相一致的方法来实现。 说明 所谓接口就是代表接口封装的成员(方法以及属性)的原型...
  • VB.NET中类对象

    千次阅读 2016-02-03 16:54:24
    在我们学习的VB.NET面向对象程序设计语言中,程序就是由这个类或多个类组成,具体需求具体创建需要的对象-实例。类就是个概念性的属于静态的,而对象则是动态的。类是在对象之上的综合抽象,有了类之后,我们在...
  • VB神童教程

    热门讨论 2012-12-20 12:34:54
    一部分:vb数据库操作实例 vb神童教程(续)--编写一个小型的信息管理系统 vb神童教程(续)--准备数据库 vb神童教程(续)--设计系统的界面及对象的属性 vb神童教程(续)--为对象添加事件代码 第二部分:补充内容 vb神童...
  • NSPack以及一些其他常见的可执行文件压缩壳)反编译窗体(frm和frx)以及用户控制(ctl)对象文件完整的伪代码p-code反编译(解析操作码并转换为标准vb指令,反编译GUID对象)两种伪代码反编译模式(包含堆栈解析或不包含...
  • VB下使用Printer对象使用心得

    万次阅读 2010-03-28 22:07:00
    最近做了个简单的数据库查询小软件,是老板个项目的配套软件。...觉得Printer对象使用还要自己确定各种打印格式和位置等,不方便(本来VB使用就是为了方便)。 使用后了解到的东西:1.每次使用Print方法后,
  • VB里面的Line方法的具体使用方法

    千次阅读 2016-11-14 17:44:12
    你试下,简单的例子 Form1.Line (1, 1)-(2000, 2000)--------------画线 Form1.Line (1, 1)-(2000, 2000), , B---------画空心矩形 ...line 方法对象上画直线和矩形。 语法 object.Line [Step
  • vb.net的面向对象

    千次阅读 2011-09-15 22:11:50
    从开始我们学习vb,就接触了面向对象的思想。不过vb是基于面向对象的,学习的时候也没能真的理解面向对象,现在开始学习vb.net了,,在visual Basic中处理的任何事物... 对象是一些把属性(Properties)、方法(methods)
  • VB学习记录

    千次阅读 多人点赞 2017-11-25 16:47:56
    、什么是VB VB程序设计是要干什么? 1.添加、设置对象; 2.对对象添加功能。 编程的基本要素 - 对象object - 类class - 属性property - 方法method - 事件event 事件过程的一般格式: ...
  • VB 面向对象程序设计的基本概念

    千次阅读 2007-04-10 10:51:00
    1.3 面向对象程序设计的基本概念1.基本术语(1) 对象对象类 对象是代码和数据的组合...对象可以是应用程序的一部分,比如可以是控件或窗体。整个应用程序也是一个对象。在 VB中可能用到的几种类型的对象: 示例
  • 你必须掌握的VB窗体知识

    千次阅读 2020-09-16 09:55:57
    窗体是VB中一类重要的对象,作为对象,窗体同样具有自己的三要素:属性、事件和方法。此外,窗体还作为其它控件的容器,用于放置其它控件。 在保存工程时,窗体会与工程文件保存在同级目录下,窗体的扩展名为.frm...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 51,990
精华内容 20,796
关键字:

vb方法是对象的一部分