Private Sub rs232_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles rs232.DataReceived像上面这样的代码,为什么回报:hanles clause requires a withevents variable defined in the containing type or one of its base types

解决方案 »

  1.   

    这是VB 没用2005编译过VB,看提示好像是类型定义的问题
      

  2.   

    你的rs232从哪里来,如果是自己定义的,需要AddHandler而不是函数后面Handles,如果是从工具箱中拖出来的,在自动生成的代码中应该有rs232  as new ...  和 Friend WithEvents rs232 as ...
      

  3.   


    我定义了的Dim rs232 As New SerialPort
    只是没贴出来
      

  4.   

    Dim withevents rs232 As New SerialPort
      

  5.   

    或者
    Dim withevents rs232 As SerialPort
    试试
      

  6.   

    引发事件的对象叫做事件源。为了处理事件源所引发的事件,可以用 WithEvents 关键字声明对象类的变量。本主题继续讨论上面的“声明和引发事件”中开始的 Widget 对象示例。为了处理 Widget 的 PercentDone 事件,将下面的代码放置到 Form1 的声明部分:Option Explicit
    Private WithEvents mWidget As Widget
    Private mblnCancel As BooleanWithEvents 关键字指定:变量 mWidget 将用于处理对象的事件。可以通过提供类名来指定对象类型,该类是创建这个对象的类。变量 mWidget 是在“Form1”的声明部分所声明的,因为 WithEvents 变量必须是模块级的变量。这是正确的,而不管将它们放置其中的模块类型如何。变量 mblnCancel 将用于取消 LongTask 方法。对 WithEvents 变量的一些限制
    使用 WithEvents 变量时,应该注意下面这些限制条件: WithEvents 变量不能是派生对象变量。也就是说,不能把它声明为 As Object—当声明该变量时必须指定类名。
    不能把 WithEvents 变量声明为 As New。必须明确地创建事件源对象,并将它赋给 WithEvents 变量。
    不能在标准模块中声明 WithEvents 变量。只能在类模块、窗体模块以及其它定义类的模块中声明。
    不能创建 WithEvents 变量数组。