处理在另一个类/文件中定义的对象的事件

外星人

我有一个VB.NET程序,其中有多个表单以及要在所有表单上访问的一些变量,因此我创建了一个包含一些公共变量的模块文件。我发现的是,尽管已经声明了这些变量,但是WithEvents如果不先复制到局部变量,就无法在表单上处理它们的事件。

发生了什么的伪代码:

在Main.vb中(模块文件)

Public WithEvents foo As VarType1

在Someform.vb中(Windows窗体)

Private Sub fooEventHandler(sender as System.Object, e As fooEventArgs) Handles foo.fooEvent

我收到一条错误消息:“ Handles子句需要在包含类型或其基本类型之一中定义的WithEvents变量”。这不是我做的吗?还是我错过了什么?

普萨·庞杰伦德拉普

关键是消息的一部分:requires a WithEvents variable defined in the containing typefoo在包含类型中定义(在这种情况下为您的表格)。有两种方法可以做到这一点。

使用模块/全局声明为Foo对象提供范围:

Public mainFoo As FooBar

它确实只需要存在Friend,但是由于这里没有什么要订阅事件的,因此它不需要是WithEvents仅需要访问Foo(而不是事件)的表单/对象可以引用此mainFoo对象。

接下来,任何希望订阅Foo事件的表单或类都需要将局部WithEvents变量设置为全局对象:

Private WithEvents myFoo As FooBar    ' variable declaration

myFoo = mainFoo       ' set myFoo to reference the real object

此方法的优点在于,在表单代码中,您应该能够从左侧菜单中选择myFoo,然后从右侧菜单中选择FooEvent,以便VB / VS像在控件上那样插入正确的事件处理程序。事件:

Private Sub myFoo_FooChanged(sender As Object, newFoo As String) _
       Handles myFoo.FooChanged

这个其他方法稍微简单一些,只需使用AddHandler手动连接该主变量即可:

AddHandler mainFoo.FooChanged, AddressOf sub_FooChanged

它避免了必须创建局部WithEvents变量,但也阻止了VS为您创建事件过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

另一个类中的轴突事件处理程序

来自分类Dev

如何从另一个Scala文件扩展在一个Scala文件中定义的类

来自分类Dev

如何访问Python另一个类中定义的对象的属性?

来自分类Dev

Typescript在另一个文件中扩展类

来自分类Dev

从另一个文件中导出TypeScript类,而不是在文件中定义

来自分类Dev

试图在另一个类的头文件中使用对象,得到“类的重新定义”错误

来自分类Dev

获取另一个类中对象的值

来自分类Dev

如何从另一个类访问main中定义的classA对象

来自分类Dev

在另一个类中访问PDO对象

来自分类Dev

控制另一个类中的对象

来自分类Dev

处理另一个活动中的对象

来自分类Dev

使用在另一个JavaScript文件中定义的对象数组

来自分类Dev

未定义的方法-从另一个文件中调用一个文件中的类

来自分类Dev

如何使用g ++构造在另一个文件中定义的类?

来自分类Dev

从接口访问另一个类中的对象?

来自分类Dev

#在Objective-C的另一个文件中定义全局预处理程序指令

来自分类Dev

如何访问Python另一个类中定义的对象的属性?

来自分类Dev

覆盖另一个文件中的类的方法

来自分类Dev

需要定义另一个文件中的对象

来自分类Dev

在PHP类中包含另一个文件

来自分类Dev

JavaScript从另一个文件中创建自定义对象以进行测试

来自分类Dev

访问在另一个类中创建的对象

来自分类Dev

在Typescript中,我如何从同一类中的另一个方法(称为事件处理程序)中调用一个类方法

来自分类Dev

指向另一个类中的对象的指针?

来自分类Dev

在另一个类中填充对象

来自分类Dev

C#中另一个类的对象

来自分类Dev

另一个文件中定义的 PHP 类不起作用

来自分类Dev

Python - 在另一个文件中的类中调用定义

来自分类Dev

对另一个类中的事件进行承诺

Related 相关文章

  1. 1

    另一个类中的轴突事件处理程序

  2. 2

    如何从另一个Scala文件扩展在一个Scala文件中定义的类

  3. 3

    如何访问Python另一个类中定义的对象的属性?

  4. 4

    Typescript在另一个文件中扩展类

  5. 5

    从另一个文件中导出TypeScript类,而不是在文件中定义

  6. 6

    试图在另一个类的头文件中使用对象,得到“类的重新定义”错误

  7. 7

    获取另一个类中对象的值

  8. 8

    如何从另一个类访问main中定义的classA对象

  9. 9

    在另一个类中访问PDO对象

  10. 10

    控制另一个类中的对象

  11. 11

    处理另一个活动中的对象

  12. 12

    使用在另一个JavaScript文件中定义的对象数组

  13. 13

    未定义的方法-从另一个文件中调用一个文件中的类

  14. 14

    如何使用g ++构造在另一个文件中定义的类?

  15. 15

    从接口访问另一个类中的对象?

  16. 16

    #在Objective-C的另一个文件中定义全局预处理程序指令

  17. 17

    如何访问Python另一个类中定义的对象的属性?

  18. 18

    覆盖另一个文件中的类的方法

  19. 19

    需要定义另一个文件中的对象

  20. 20

    在PHP类中包含另一个文件

  21. 21

    JavaScript从另一个文件中创建自定义对象以进行测试

  22. 22

    访问在另一个类中创建的对象

  23. 23

    在Typescript中,我如何从同一类中的另一个方法(称为事件处理程序)中调用一个类方法

  24. 24

    指向另一个类中的对象的指针?

  25. 25

    在另一个类中填充对象

  26. 26

    C#中另一个类的对象

  27. 27

    另一个文件中定义的 PHP 类不起作用

  28. 28

    Python - 在另一个文件中的类中调用定义

  29. 29

    对另一个类中的事件进行承诺

热门标签

归档