精华内容
下载资源
问答
  • VB事件和方法的区别

    万次阅读 2012-08-19 21:30:07
    你可以把人体看作窗体对象,耳朵作为窗体上一个控件,比如说你听到了一句话,这时就激活了耳朵OnLister事件, Private sub 耳朵_OnLister(ByVal 说话人 as 人) select case 说话人 case 老婆: call ...
     
     
    以人体为类,
    你可以把人体看作窗体对象,耳朵作为窗体上的一个控件,比如说你听到了一句话,这时就激活了耳朵的OnLister事件,
    Private sub 耳朵_OnLister(ByVal 说话人 as 人)
      select case 说话人
        case 老婆:
          call 全心全意听话()
        case 老板:
          call 尽力听话()
        case 仇人:
          me.打人(说话人) '调用“人体”这个窗体对象的“打人”方法
      end select
    end sub
    
    
    由上面的这个例子可以看出:
    
    1、事件,是被外在条件激活的,是被动的;而方法却是主动的。
    所以我们在写VB程序时不需要关心事件怎么被VB的事件管理器激活,只需要关心,在什么条件下被激活,就可以了;
    而方法要由我们主动的,在代码中写出在什么地方调用,比如上例中的"me.打人(说话人)",如果不主动调用,就不会发生。
    
    2、事件中要写代码;方法,系统自己定义代码。
    事件中如果不写代码,那么这个事件就和没发生一样;
    方法,系统自己内部定义了代码,不需要自己修改,但是可能通过传送参数,改变方法执行的效果,比如"me.打人(说话人)",如果,你不传一个参数,就不知道要打谁。
    
    以上大体就是如此了。。。。。
     
     
     
    借用MSDN的参考文档资料说明如下: 
    属性、方法和事件概述 Visual Basic 的窗体和控件是具有自己的属性、方法和事件的对象。
    可以把属性看作一个对象的性质,把方法看作对象的动作,把事件看作对象的响应。 
    日常生活中的对象,如小孩玩的气球同样具有属性、方法和事件。
    气球的属性包括可以看到的一些性质,如它的直径和颜色。其它一些属性描述气球的状态(充气的或未充气的)或不可见的性质,如它的寿命。通过定义,所有气球都具有这些属性;这些属性也会因气球的不同而不同。 
    气球还具有本身所固有的方法和动作。如:充气方法(用氦气充满气球的动作),放气方法(排出气球中的气体)和上升方法(放手让气球飞走)。所有的气球都具备这些能力。 
    气球还有预定义的对某些外部事件的响应。例如,气球对刺破它的事件响应是放气,对放手事件的响应是升空。 
    如果能对气球编程的话,Visual Basic 代码将如下所示。
    其作用是设置气球的属性: 
    Balloon.Color = Red 
    Balloon.Diameter = 10 
    Balloon.Inflated = True 
    注意代码的语法,首先是对象 (Balloon),接着是属性 (Color),然后是赋值 (Red)。重复这条语句,但是,换一个不同的值,就可以改变气球的颜色。
    属性也可以在程序设计阶段在“属性”窗口中设置。
    调用气球的方法是这样的: Balloon.Inflate Balloon.Deflate Balloon.Rise 5 
    它的语法与属性的语法相似,对象(一个名词)后面紧跟着方法(一个动词)。
    在第三个例子中有一个附加项,称为一个参数,表示气球上升的高度。一些方法有一个或多个参数,它们对执行的动作做进一步的描述。 
    气球对一个事件的响应如下所示:
     Sub Balloon_Puncture() 
    Balloon.Deflate 
    Balloon.MakeNoise "Bang" 
    Balloon.Inflated = False 
    Balloon.Diameter = 1 
    End Sub 
    本例中代码描述了当刺穿事件发生时,气球的行为:调用 Deflate 方法,然后以 "Bang"(发出的声响)为参数调用 MakeNoise 方法。因为气球已不再是充气状态,所以把 Inflated 属性置为 False,并给 Diameter 属性设置一个新值。 
    实际上对气球不能编程,但是,可以对 Visual Basic 的窗体或控件进行编程。作为程序员,由您作主。您决定应更改哪些属性、调用哪些方法、对哪些事件作出响应,从而得到希望的外观和行为。
     
     
    展开全文
  • 相同之处是都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件,都可以实现接口,都有共享构造函数,都能对成员进行封装。 没错都有构造函数,那结构构造函数是什么,结构难道也可被实例化成对象? ...

    类是我们用来构造 VB.NET 应用程序时的最基本的编程结构了。

    那结构与类有什么相似之处与不同之处呢?

    结构和类,

    相同之处是都含有成员,包括构造函数、方法、属性、字段、常量、枚举和事件,都可以实现接口,都有共享的构造函数,都能对成员进行封装。

    没错都有构造函数,那结构的构造函数是什么,结构难道也可被实例化成对象?

    看这一段代码:

    Module Module1
    Private Structure structureA
    Dim Name As String
    Dim Age As Integer

        Public Sub New(ByVal _Name As String, ByVal _Age As Integer)
            Name = _Name
            Age = _Age
        End Sub
    End Structure
    
    Sub Main()
        Dim intA As New structureA  '无参数的构造函数
        Dim intB As New structureA("小明", 17) '有参数的构造函数
    End Sub
    

    End Module
    怎么样,是不是很好奇,明明只定义一个带参数的构造函数,intB 的实例化我们可以明白,但是是 intA 怎么也能通过编译器检测,给实例化呢?

    是不是很好奇,结构怎么也能实例化成对象,和类很象呢!

    原因是,每个结构都隐式地具有 Public 无参数实例构造函数也就是 Public Sub New(),该构造函数能产生结构的默认值。所以你平时不写构造函数,也一样可以 New出一个结构来。

    事实上,我们在结构类型声明中不能声明无参数的构造函数,只能声明“带参数”的构造函数。都可以用 new 来实例化。

    那结构和类在内存分配上难道也是 一样的吗?当然不一样,差别可就大了。

    简单来说 ,结构是值类型,而类是引用类型。因此,结构使用堆栈分配,类使用堆(托管堆)分配。

    示例:

    Module Module1
    Private Structure structureA
    Dim Name As String
    Dim Age As Integer
    Public Sub New(ByVal _Name As String, ByVal _Age As Integer)
    Name = _Name
    Age = _Age
    End Sub
    End Structure

    Private Class classA
        Public sdNumber As Integer = 0
    End Class
    
    Sub Main()
        Dim stcA As New structureA("小明", 0) '有参数的构造函数
        Dim stcB As structureA = stcA
        stcB.Age = 17
        Dim clsA As New classA
        Dim clsB As classA = clsA
        clsB.sdNumber = 1001
        Console.WriteLine("stcA.Age = {0} ,stcB.Age = {1} ", stcA.Age, stcB.Age)
        Console.WriteLine("clsA .sdNumber = {0} ,clsB .sdNumber = {1}", clsA.sdNumber, clsB.sdNumber)
        Console.Read()
    End Sub
    

    End Module
    结果如图:

    这就是值类型和引用类型的差别。

    结构的实例 stcB.Age 赋值并不影响stcA.Age, 这是因为虽然它们同属于一种SHenry结构,而结构也是属于值类型的,值类型的变量存储在堆栈上的,每个变量都有自己单独的内存空间,所以互不影响。

    相反,给 clsB.sdNumber 赋值 17 后; 则会影响slcA.sdNumber 变量的值,这是因为在 Classs 类中,虽然 sdNumber 变量是值类型,但它的对象是类,类是引用类型,而引用类型是存储在堆(托管堆)上,堆上存储的是对象的实际对象值。

    不管后面定义多少个 class 类型的变量,只要不实例化,它们都只是在堆栈上划分各自的空间,来存储 class 对象的引用地址,而这每个不同名称的引用地址都指向同一个引用对象的实际值。所以,不管哪个 class 类型变量改变了值,它都会影响原始值。

    说得更清楚一点,类作为引用类型,是存储在堆上,只能通过引用地址来访问它们,不能直接访问。

    引用类型的变量总是包含该类型的值引用,或包含空引用。空引用不引用任何内容;除分配空引用外,对空引用进行的任何操作都是无效的。

    引用类型的变量赋值只会创建引用的一个副本,而不是所引用的值的副本。它们实际上都是会指向同一块存储区的。

    结构是直接存储在堆栈上,要么在数组中,要么在另一个类型中 。当包含结构实例的位置被销毁时,结构实例也会被销毁。值类型总是可以直接 访问。我们不能创建对值类型的引用,也不能引用已销毁的值类型实例。值类型的变量总是包含此类型的值。与引用类型不同,值类型的值不能为空引用,也不能引用派生相近程度较大的类型的对象。值类型的变量赋值会创建所赋的值的副 本,当然会新开辟一块内存区来保存值。

    那它们还有什么区别没有呢?

    当然有很多,比如所有的结构成员都默认为 Public,而类的变量和常量默认为 Private。其他的类成员默认为 Public;结构成员不能声明为 Protected,而类成员可以;结构过程不能处理事件,类过程可以;结构变量声明不能指定初始值、New 关键字或数组初始大小,类变量声明可以。

    结构从不终止,所以公共语言运行库从不在任何结构上调用 Finalize 方法;类可由垃圾回收器终止,垃圾回收器会跟踪未完成的引用直到某个特定的实例,当检测到没有剩下的活动引用时, 垃圾回收器将在类上调用 Finalize。”

    因为结构是值类型,是由系统统一管理内存,不是引用,所以不会对内存造成危害。

    还有结构是不可继承的,而类可以继承。其实结构自身是从 ValueType 类隐式继承下来的。

    数据类型可分为值类型和引用类型。值类型要么是堆栈分配的,要么是在结构中以内联方式分配的。引用类型是堆分配的,引用类型和值类型都是从最终的基类 Object 派生出来的。当值类型需要充当对象时 ,就在堆上分配一个包装,该包装能使值类型看上去像引用vb.net教程对象一样,并且将该值类型的值复制给它。该包装被加上标记,以便系统知道它包含一个值类型。这个过程程称为装箱,其反向过程程称为拆箱。装箱和拆箱能够使任何类型像对象一样进行处理。

    转载于:https://www.cnblogs.com/lfls128/p/4945783.html

    展开全文
  • 共享成员就是在所有类和所定义派生类实例之间共享的方法、属 性、字段和事件。所有使用类创建对象都可以访问相同数据、共享实现过程 ,并且收到相同激发事件。 要实现函数过程共享性,只需在 Public 或 ...

    共享成员(Shared):

    VB.NET现在是支持真正的面向对象编程,可以继承、使用多态、共享成员 和静态成员。

    共享成员就是在所有类和所定义派生类的实例之间共享的方法、属 性、字段和事件。所有使用类创建的对象都可以访问相同的数据、共享实现过程 ,并且收到相同的激发事件。

    要实现函数过程的共享性,只需在 Public 或 Private 成员修饰符后加上 Shared 关键字即可了。

    Shared 关键字指示一 个或多个被声明的编程元素将被共享。

    共享元素不关联于某类或结构的特定实例 。可以通过使用类名或结构名称或者类或结构的特定实例的变量名称,限定共享元素来访问它们。

    简单的描述就是Shared变量是为类型本身服务而不是为特定对象服务的。

    你来看这段代码

    Module Module1
        Private Class First
            Public Shared a As String = "Hello World" '共享性变量
            Public b As Integer = 100 '非共享性的公开变量
            Public Shared Function strInfor() As String
                Dim a As String = Nothing
                For i = 0 To 10
                    a &= " " & i * 2
                Next
                strInfor = a
            End Function
        End Class
        Sub Main()
            '在不没实例化类对象时,可以直接使用该类的共享成员,但在使用时,必须指定共享成员所在的类名或结构名
            Dim strText As String = First.a
    
            '下面这句引用就是错误的,因为对非共享成员的引用,需要先实例化对象,再通过对象名来引用
            Console.WriteLine("First 类中共享性变量 a 的值为:{0}", strText)
            Console.WriteLine("First 类中共享性函数 strInfor 的值为:{0}", First.strInfor)
            Console.Read()
        End Sub
    End Module

    如图:

    结果:

    注意:有两个要点,一个是共享成员如果是方法或属性,我 们不用创建实例就可以直接用‘类名.共享成员’的方法进行调用;第 二个要点,共享字段是唯一的,也就是所以的调用程序都是访问的同一个变量,所以,它的值可以被任何调用对象所修改。

     

    静态成员(Static ):

    Static 关键字指定在声明一个或多个局部变量的过程终止后,这些已声明的局部变量继续存在并保留其最新值。

    通常,过程终止后,此过程中的局部变量将立即消失。静态变量可继续存在,并保留其最新值。您的代码下次调用此过程时,此变量将不会重新初始化,仍然存储已赋给它的最新值。静态变量在定义它的类或模块的生存期内继续存在。

    规则

    • 声明上下文。 只能对局部变量使用 Static这意味着 Static 变量的声明上下文必须是一个过程或过程中的块,而不能是源文件、命名空间、类、结构或模块。

      不能在结构过程内使用 Static

    • 组合修饰符。 不能在同一声明中将 StaticReadOnlyShadowsShared 同时指定。

    行为

    任何局部变量的行为都取决于此变量是否在 Shared 过程中声明。如果过程为 Shared,该过程的所有局部变量都自动共享,包括 Static 变量。整个应用程序只有一个这种变量的副本。使用类名调用 Shared 过程,而不是使用指向此类的实例的变量。

    如果过程不是 Shared,则其局部变量为“实例变量”,包括 Static 变量。每个变量在类的每个实例中都有一个独立的副本。使用指向类的特定实例的变量调用非共享过程。该实例中的任何变量都与另一实例中相同名称的变量无关。因此,它们可以存储不同的值。

    看实例:

    Module Module1
        Private Class First
            Public Function intValue() As Integer
                Static a As Integer
                a = a + 1
                Return a
            End Function
        End Class
        Sub Main()
            Dim intA As New First
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.WriteLine("First 类中 intValue的值为:{0}", intA.intValue)
            Console.Read()
        End Sub
    End Module

    我们来看结果:

    很好的证明了,当每次的函数过程调用结束后,它里面的静态变量的值并没被 CLR 的垃圾回收机制清空并释放。这里共调用了六次,而每次最新的值都被保留了下来,直到程序被关闭,才会被清空和释放。

    转载于:https://www.cnblogs.com/lfls128/p/4945652.html

    展开全文
  • VB面向对象

    热门讨论 2019-10-13 09:31:18
    接触过VB的伙伴都知道,VB是一种面向对象程序设计,那么,什么是面向对象设计、它其他设计方法有什么区别、它又有什么优点呢?我总结了以下几个方面。 首先,面向对象设计基本概念。 1:面向对象程序设计...

    接触过VB的伙伴都知道,VB是一种面向对象的程序设计,那么,什么是面向对象设计、它和其他设计方法有什么区别、它又有什么优点呢?我总结了以下几个方面。

    首先,面向对象设计的基本概念。

    1:面向对象的程序设计是一种以对象为基础,以事件驱动对象对事件进行处理的程序设计技术,将解决问题的过程变成对各个对象分类演绎的过程,通过对象所发生的事件进行响应,最终引发对象数据即属性的改变,从而完成程序设计(也就是说通过事件催动对象的变化,对象的响应引发对象数据属性的变化,完成程序设计)

    2:那么什么是对象,对象又有哪些属性哪几类呢?

      (1):万物皆对象,对象具体存在并且具有独特个性可以用属性、方法、事件、来描述对象(属性、方法、事件。只能是对象的属性、方法、事件。)

      (2):对象的类,类是指具有相同性质的对象的合集,每一个对象都是类的一个实例。

      (3):对象的属性,属性即对象的特性指这个对象本身固有的特性,特征。VB里面每个对象都有自己的特征,要注意区分。

    3:面向对象程序设计有哪些优点呢

      (1):容易维护,因为面向对象的程序设计可读性非常的高所以维护起来比较清晰。

      (2):效率高,软件开发的时候没有那么的抽象,逻辑比较清晰,接近我们平常的思考方式,做起来比较的快。

      (3):系统灵活,容易链接其他程序。

    4:面向过程的程序设计

    面向过程是一种以过程为中心的编程思想,与面向对象的封装,继承,类,有很大的不同.

     

                                                                               VB对象三要素                                                          

    展开全文
  • VB常用内部控件

    2012-04-13 11:43:00
    控件是vb程序的基本组成部分,合理熟练的使用这些常用的内部控件,并熟练的掌握他们的属性、方法和事件进行可视化的程序设计。这其中我们要了解一下这些控件的公共属性有哪些?要留心一些控件的区别。 以下是我对...
  • VB程序设计及应用

    2012-11-26 14:07:12
    14.1.2 对象链接与嵌入的区别 14.2 OLE控件常用属性与方法 14.2.1 OLE控件的属性 14.2.2 编辑OLE对象 实训 第15章 多媒体 15.1 多媒体控件 15.1.1 多媒体控件的常用属性 15.1.2 多媒体控件的...
  • VB课程设计俄罗斯方块

    热门讨论 2011-02-25 10:46:55
    将它形状编号为01,在后面方便调用,其他方块造型同样的方法。 2.1.3俄罗斯方块旋转 俄罗斯方块旋转主要将方块位置加以变换得到,例如上述范例,长条型有两中样式,根据小方块编号变动来实现整个...
  • JSF中UI组件

    2010-05-31 09:29:00
    这意味着他有属性,方法和事件,并且可以以插件形式集成到IDE当中。与Swing不同JSF中UI组件被设计为Web应用程序一部分,他存在与服务端,而不是客户端。这一点非常重要,因为大多数Web应用不是以组件方式输出...
  • ASP.NET网页代码模型及生命周期

    热门讨论 2009-07-28 14:22:11
    ASP.NET页框架模型隐式为用户建立了事件和事件处理程序关联。ASP.NET让用户可以为从浏览器传递事件在服务器代码中设置相应处理程序。假设某个用户正在浏览网站并与页面之间产生了某种交互,用户操作就会...
  • VBandC#对比

    2019-10-07 08:13:03
    区别:一个是基于面向对象,一个是面向对象,那么从根本...VB的结构分为顺序,选择循环,数据类型有字符串,整型,双精度,日期等类型。 C#: 是完全面向对象,基本特征也有封装,继承,多态,封装方法,...
  • croldraw VBA二次开发

    2009-06-23 09:58:57
    VBA(Visual Basic for ...对象具有属性、事件和方法。对象属性是封装在对象内部数据,它反映了对象特征。VBA中每个对象都有许多属性。对象大多数属性是可读,但不是所有属性都是可写。 .......
  • 参数传递

    2010-07-15 11:47:00
    它分为事件过程通用过程,过程的声明函数的声明见链接(变量的作用域生命期),过程的调用用call语句,提到过程就要提到函数,函数过程的区别就是函数有返回值而过程没有返回值。当然调用的时候就可以是两种...
  • 6.6.2 事件方法和属性 282 6.6.3 写入跟踪文件 284 6.7 小结 286 第7章 测试驱动开发 287 7.1 测试内容和方式 288 7.2 visual studio中tdd工具 290 7.3 单元测试过程 291 7.3.1 创建测试程序 291 ...
  • asp.net知识库

    2015-06-18 08:45:45
    C#中 const readonly 的区别 利用自定义属性,定义枚举值的详细文本 Web标准ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base...
  • 6.6.2 事件方法和属性 282 6.6.3 写入跟踪文件 284 6.7 小结 286 第7章 测试驱动开发 287 7.1 测试内容和方式 288 7.2 visual studio中tdd工具 290 7.3 单元测试过程 291 7.3.1 创建测试程序 ...
  • C#微软培训教材(高清PDF)

    千次下载 热门讨论 2009-07-30 08:51:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 6.6.2 事件方法和属性 282 6.6.3 写入跟踪文件 284 6.7 小结 286 第7章 测试驱动开发 287 7.1 测试内容和方式 288 7.2 visual studio中tdd工具 290 7.3 单元测试过程 291 7.3.1 创建测试程序 291 ...
  • 6.6.2 事件方法和属性 282 6.6.3 写入跟踪文件 284 6.7 小结 286 第7章 测试驱动开发 287 7.1 测试内容和方式 288 7.2 visual studio中tdd工具 290 7.3 单元测试过程 291 7.3.1 创建测试程序 291 ...
  • C#微软培训资料

    2014-01-22 14:10:17
    18.2 在 C #代码中调用 C++ VB 编写组件 .240 18.3 版 本 控 制 .249 18.4 代 码 优 化 .252 18.5 小 结 .254 第五部分 附 录 .255 附录 A 关 键 字.255 附录 B 错 误 码.256 附录 C .Net 名字空间...
  • 6.6.2 事件方法和属性 282 6.6.3 写入跟踪文件 284 6.7 小结 286 第7章 测试驱动开发 287 7.1 测试内容和方式 288 7.2 visual studio中tdd工具 290 7.3 单元测试过程 291 7.3.1 创建...
  • MATLAB混合编程与工程应用.pdf

    热门讨论 2010-05-19 10:32:48
    3.3.3 MEX 文件与独立应用程序的区别61 3.4 C 语言MEX 函数61 3.5 Visual C++中MEX 文件的建立调试64 3.5.1 Visual C++中MEX 程序的建立环境设置65 3.5.2 MEX 程序的调试68 3.6 MEX 编程实例70 第4 章 通过...
  • 24.在C#中,string str = null 与 string str = “” 请尽量使用文字或图象说明其中的区别。 答:string str = null 是不给他分配内存空间,而string str = \"\" 给它分配长度为空字符串的内存空间。 25.请详述在...
  • Java开发技术大全(500个源代码).

    热门讨论 2012-12-02 19:55:48
    differ.java 测试静态方法与实例方法之间的区别 forefather.java 一个简单的基类 grandson.java 上面这个类的子类 hasConstructor.java 拥有构造器的类 hasFinalFun.java 拥有最终方法的类 hasRecall.java ...
  • 外文翻译 stus MVC

    2010-05-28 15:02:31
    1:外文原文 Struts——an open-source MVC implementation This article introduces Struts, a Model-View-Controller implementation that uses servlets and JavaServer Pages (JSP) technology....
  • 8. 应用程序完美结合,支持windows下所有开发工具程序语言(例如Delphi、C++、VB、PB、.NET、易语言),最终用户在设计器里可直接选择打印字段,生成表达式,报表设计器用户容易学习理解。 9. 支持脚本窗体...
  • 有一些不同的地方,因此我们在学习的时候需要注意它们之间的区别,不要混淆。在本章中, 我们需要掌握c#中的变量、数据类型、运算符、条件、分攴、循环等基C排基础语法,这些 语言层血的知识是我们编写所有程序的基础,...

空空如也

空空如也

1 2
收藏数 34
精华内容 13
关键字:

vb方法和事件的区别