加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

关于VB中的WithEvents关键字理解

发布时间:2020-12-16 23:51:40 所属栏目:大数据 来源:网络整理
导读:【前言】 ??最近敲机房敲到了日结账单,对于报表和VB的交互我们还是第一次接触,但是我们却可以借助巨人的肩膀。但是我在看巨人博客的时候,发现在定义报表对象的时候却有一些不同。带着这样的疑问,我就想知道到底有什么区别。 【WithEvents关键字】 ??我们

【前言】

??最近敲机房敲到了日结账单,对于报表和VB的交互我们还是第一次接触,但是我们却可以借助巨人的肩膀。但是我在看巨人博客的时候,发现在定义报表对象的时候却有一些不同。带着这样的疑问,我就想知道到底有什么区别。

【WithEvents关键字】

??我们在使用报表的时候,当然得先定义一个变量,由于它属于对象变量,所以我们在使用前还必须实例化。
??但是我却发现有两种定义代码,接下来就让我们了解一下有哪两种,他们之间的区别到底是什么?

'第一种
Dim report As grproLibCtl.GridppReport
'第二种
Dim WithEvents report As grproLibCtl.GridppReport

??显而易见,它们只是因为一个关键字——WithEvents。要想弄清楚它们之间的区别,只要知道WithEvents关键字的作用就行了。
??1、用处
??WithEvents只用于声明变量。
??2、作用
??顾名思义,WithEvents的意思就是“和事件有关”。它的作用就是加载所定义的类的事件,类不像控件,直接双击控件就可以进行事件编辑。如果我们在定义对象变量的时候加上WithEvents关键字,就可以在代码窗口看到该类的事件了。举个栗子:

Dim report As grproLibCtl.GridppReport  '(无法使用report事件)
Dim WithEvents report As grproLibCtl.GridppReport  '(可以使用report事件)

??再看一下对比图,就更直观了。


这是没有用WithEvents关键字的时候,可以看到对象栏里没有report。


这是加上WithEvents关键字之后,对象栏里出现了report。


可以看到选择了report对象之后,右边出现了它的事件。

??其实,WithEvents关键字就是继承定义的对象的事件,如果我们仅使用类的属性和方法,只用dim,private,public声明变量就可以了,就像第一种。而如果还想使用类的事件,就必须加上WithEvents关键字。

??3、使用WithEvents关键字的限制条件
??(1)WithEvents 变量不能是派生对象变量。也就是说,不能把它声明为 As Object(当声明该变量时必须指定类名)。
??Eg:错误的写法:Dim WithEvents a as Object
????正确的写法:Dim WithEvents a as Text
??(2)不能把 WithEvents 变量声明为 As New,即 WithEvents 关键字和 New 关键字不能同时使用。如果定义成下面这样就会报错:

Dim WithEvents a as new form

??(3)不能在标准模块中声明 WithEvents 变量。只能在类模块、窗体模块以及其它定义类的模块中声明。
??(4)虽然WithEvents是Dim,Public,Private语句的关键字,但是不能在过程里面中用WithEvents关键字进行对象变量的声明,只能在通用里使用。
??(5)只能使用 WithEvents 声明单个变量,不能声明数组。

??4、定义语句的格式
??Dim [WithEvents] varname [([subscripts])] As [New] type

【Objects】

??表示“对象”数据类型,该关键字通常与integer,byte,string这些变量数据类型进行区分。通常,我们定义一个对象变量的时候要用到Object。
??object 可以代表VB中的任何一个对象。 在某些情况下我们在代码中要对一些并不是事先就能够确定类型的对象进行操作就可以用object对象。比如我们敲机房的时候,在模块里用到的清楚文本框内容的函数里就用到了object。
??如果还不理解可以看下面的代码:

Dim i As Integer,b as Byte,s as String,cc as Object
'那么通过上面这个定义语句,我们得到了四个变量
'i是整型变量,b是字节型变量,s是字符串型变量,而cc是对象变量
i = 1
b = 255
s = "Acb"
Set cc = Text1
'通过上面的四个赋值语句,我们可以看到cc这个对象数据类型,必须使用Set,通过这个语句,'那么我们就用cc引用了Text1这个对象。于是:
Text1.Text = "A"
cc.Text = "B"
'那么上面两个语句就具备了同样的修改Text1文本框内容的功能了。

【后语】

??以上只是我的一点儿小理解,如果大家有更深的理解,我们可以深入的交流,欢迎大家斧正。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读