我的编程空间,编程开发者的网络收藏夹
学习永远不晚

VB.NET WithEvents怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

VB.NET WithEvents怎么用

小编给大家分享一下VB.NET WithEvents怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

VB.NET经过长时间的发展,很多用户都很了解VB.NET WithEvents了,这里我发表一下个人理解,和大家讨论讨论。VB除了可以用C#那样的方法来处理事件响应以外,还有从VB5继承下来的独特的事件处理方式——VB.NET WithEvents。

我喜欢称这种事件处理方式为静态的事件处理,书写响应事件的方法时就已经决定该方法响应的是哪一个事件,而C#则是在代码中绑定事件的。比如下面这个最简单的例子:

Public Class HandlerClass  Public WithEvents MyObj As EventClass   Private Sub MyObj_MyEvent(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyObj.MyEvent  MsgBox("hello")  End Sub   Public Sub New()  MyObj = New EventClass  End Sub  End Class

代码中用到的EventClass是这样的:

Public Class EventClass  Public Event MyEvent As EventHandler   Protected Overridable Sub OnMyEvent(ByVal e As EventArgs)  RaiseEvent MyEvent(Me, e)  End Sub   Public Sub Test()  OnMyEvent(New EventArgs)  End Sub  End Class

我们来复习一下,这段代码隐式地给EventClass编写了两个方法——Add_MyEvent(EventHandler)和 Remove_MyEvent(EventHandler),实际上任何使用事件的上下文都是通过调用这两个方法来绑定事件和解除绑定的。C#还允许你书写自己的事件绑定/解除绑定的代码。

那么WithEvents是怎么工作的呢?VB.net的编译器在编译时自动将

Public WithEvents MyObj As EventClass

翻译成下面这个过程:

Private _MyObj As EventClass   Public Property MyObj() As EventClass  Get  Return _MyObj  End Get  Set(ByVal Value As EventClass)   If Not (Me._MyObj Is Nothing) Then  RemoveHandler _MyObj.MyEvent, AddressOf MyObj_MyEvent  End If   Me._MyObj = Value  If Me._MyObj Is Nothing Then Exit Property   AddHandler _MyObj.MyEvent, AddressOf MyObj_MyEvent   End Set  End Property

由此可见,当对VB.NET WithEvents变量赋值的时候,会自动触发这个属性以绑定事件。我们所用的大部分事件响应都是1对1的,即一个过程响应一个事件,所以这种VB.NET WithEvents静态方法是非常有用的,它可以显著增强代码可读性,同时也让VB.net中的事件处理非常方便,不像C#那样离开了窗体设计器就必须手工绑定事件。

不过在分析这段IL的时候,我也发现了VB.net在翻译时小小的问题,就是ldarg.0出现得过多,这是频繁使用Me或this的表现,所以我们在编码过程中一定要注意,除了使用到Me/this本身引用以外,使用它的成员时不要带上Me/this,比如Me.MyInt = 1就改成MyInt = 1,这样的小习惯会为你带来很大的性能收益。

看完了这篇文章,相信你对“VB.NET WithEvents怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

VB.NET WithEvents怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

VB.NET WithEvents怎么用

小编给大家分享一下VB.NET WithEvents怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!VB.NET经过长时间的发展,很多用户都很了解VB.NET WithEvents了,这里我发表一下个人理解,和大家讨论
2023-06-17

VB.NET Excel怎么用

这篇文章给大家分享的是有关VB.NET Excel怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VB.NET Excel说起报表设计应用程序,无意微软的Excel是一支独秀,VB.NET Excel就是用来
2023-06-17

VB.NET中Type怎么用

这篇文章主要介绍了VB.NET中Type怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。关于VB.NET的数据类型想必大家都知道了,但是对与初学者来说数据类型还是一个难点
2023-06-17

VB.NET对象怎么用

这篇文章主要介绍了VB.NET对象怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。代码重用简化了开发过程,而可视化继承之类的功能又使得代码重用更加方便。然而,代码重用并不
2023-06-17

VB.NET Web Service怎么用

这篇文章将为大家详细讲解有关VB.NET Web Service怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一.Web Service为何物,我们为什么需要它:Web Service的主要功能就是
2023-06-17

VB.NET中fnSimpleObjectToXML怎么用

这篇文章主要为大家展示了“VB.NET中fnSimpleObjectToXML怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET中fnSimpleObjectToXML怎么用”这篇
2023-06-17

VB.NET数组怎么用

这篇文章主要介绍了VB.NET数组怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VB.NET数组是程序中经常要使用到的一种数据类型,VB.NET中的数组,虽然语法结构等
2023-06-17

VB.NET Environment类怎么用

这篇文章主要为大家展示了“VB.NET Environment类怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET Environment类怎么用”这篇文章吧。在VB的以前版本中,
2023-06-17

VB.NET Web Forms怎么用

小编给大家分享一下VB.NET Web Forms怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!尽管在Visual Basic 6中也有一些有关互联网功能的组件,例如WebClasses、Winsock和 WebBr
2023-06-17

VB.NET中StructLayout怎么用

这篇文章主要为大家展示了“VB.NET中StructLayout怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET中StructLayout怎么用”这篇文章吧。VB.NET编程语言
2023-06-17

VB.NET常量怎么用

小编给大家分享一下VB.NET常量怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!作为生存在这个时代的开饭人员来说,他们是幸福的。因为各种技术的产生,帮助他们
2023-06-17

VB.NET中Hashtable怎么用

这篇文章给大家分享的是有关VB.NET中Hashtable怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。VB.NET Hashtable用法相关概念详解1、VB.Net 2003下,在窗体设计起代码中加入:
2023-06-17

VB.NET Data Grid怎么用

小编给大家分享一下VB.NET Data Grid怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在以数据库为中心的应用程序中,主/从数据表视图是一种非常常见的设计模式。在这种模式下,***数据(主表)显示在一个用户界
2023-06-17

VB.NET对话框怎么用

这篇文章主要为大家展示了“VB.NET对话框怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET对话框怎么用”这篇文章吧。VB.NET对话框调用概述:我们都知道在.NET中调用一个打
2023-06-17

VB.NET数据库怎么用

这篇文章主要为大家展示了“VB.NET数据库怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET数据库怎么用”这篇文章吧。VB.NET数据库代码示例:Imports System
2023-06-17

VB.NET Shared变量怎么用

这篇文章将为大家详细讲解有关VB.NET Shared变量怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。VB.NET是基于微软.NET Framework之上的面向对象的中间解释性语言,可以看作是V
2023-06-17

VB.NET指针怎么应用

这篇文章主要介绍了VB.NET指针怎么应用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VB里使用指针不象C里那样灵活,用指针处理数据时都需要用CopyMemory将数据在指
2023-06-17

VB.NET API函数怎么用

这篇文章主要为大家展示了“VB.NET API函数怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“VB.NET API函数怎么用”这篇文章吧。程序中判定Windows的版本 众所周知,Win
2023-06-17

VB.NET怎么调用Window API

这篇文章主要介绍了VB.NET怎么调用Window API,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。VB.NET调用Window API的方法与 VB6中类似,也是必须使
2023-06-17

VB.NET怎么使用FileVersionInfo类

这篇文章主要介绍VB.NET怎么使用FileVersionInfo类,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!您是否曾经希望了解如何检索要在您自己的应用程序中使用的特定文件的属性?如果您要在 VB.NET 中开发
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录