如何在对象的构造函数完成后立即触发事件?

2024-04-18

研究告诉我,从构造函数本身引发事件是不可行的,因为对象可能没有完全初始化......那么构造函数触发后我可以在哪里触发事件?


您可以做的一件事是添加一个方法来处理其他后期任务:

Friend Class FooBar

     Public Sub New
         ' your code here
     End Sub

     Public Sub Create
        ' do anything you want
     End Sub

End Class

别处:

Friend WithEvents Foo As Foobar

' ...
Foo = New FooBar      '  Foo doesnt exist until ctor code executes and the
                      ' code returns to here. 

Foo.Create            ' do whatever you like, as long as any other
                      ' objects referenced have been created.               

从 ctor 调用 sub 来引发事件不适用于类的原因是:

Private Sub SomeEvent(sender As Object, e As EventArgs) Handles Foo.SomeEvent
    Console.Beep()
End Sub

关键是Handles Foo.SomeEvent

没有Foo尚未处理该事件。它不会崩溃并且引发事件,但没有对象供侦听器捕获/处理事件。创建了足够的表单InitializeComponents,它确实适用于表单。

可能还有一个接口来实现类似的东西,我知道一些组件,但不知道类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在对象的构造函数完成后立即触发事件? 的相关文章

  • std::线程构造和执行

    我在 中找不到任何信息文档 http en cppreference com w cpp thread thread thread是否能保证线程对象构造完成后线程实际上正在运行 换句话说 是否可以保证线程构造函数完成后线程函数已经被执行 一
  • Android:如何创建MotionEvent?

    MotionEvent没有获取构造函数 我想在单元测试中手动创建MotionEvent 那么如何获取它 谢谢 您应该使用静态之一obtain的方法MotionEvent类来创建一个新事件 最简单的方法 除了从现有事件包装新事件之外 是 st
  • 如何将导入的命名空间提供给 CompileAssemblyFromSource

    我正在尝试将 VB 源文件加载到内存中 但是 VB 文件假定与其关联的项目具有在项目级别定义的一些全局 导入的命名空间 此 VB 功能允许单个文件在每个文件上省略 Imports 语句 在 C 中使用 Dim sourceCode As S
  • STL容器如何复制对象?

    我知道 STL 容器 比如vector添加对象时复制该对象 push back方法如下 void push back const T x 我很惊讶地发现它把该项目作为参考 我编写了一个示例程序来看看它是如何工作的 struct Foo Fo
  • 从字符串“”到类型“布尔”的转换无效

    我在 ASP NET 登录表单的标题中收到错误消息 有谁知道我该如何解决它 非常感谢帮助 Protected Sub Button1 Click ByVal sender As Object ByVal e As EventArgs Han
  • 是否可以强制 Visual Studio 2010 使用 Visual Basic 10?

    要重现我收到的错误 在 Visual Basic 中创建一个新的 Visual Studio 2010 ASP NET 网站 面向 NET 2 0 输入 公共财产测试作为字符串 请注意 Visual Basic 9 0 不支持自动实现的属性
  • 如何创建“抽象字段”?

    我知道java中不存在抽象字段 我也读过这个问题 https stackoverflow com questions 2211002 why not abstract fields但提出的解决方案并不能解决我的问题 也许没有解决方案 但值得
  • C# vb:S​​ystem.Func 占用多少内存?

    System Func 究竟拥有多少内存 System Func 是 1 行还是 1000 行有什么区别吗 Func是委托类型 一个实例在x86抖动中占用32字节存储 对象头 8 个字节 4 个字节用于 Delegate methodBas
  • 与超类和子类构造函数接口

    我在 matlab 文档和之前有关使用 matlab 继承和类构造函数创建接口的问题中找不到帮助 为了使其整洁 放在一个包内 我可以将其压缩如下 而不是拖拽代码 一套 MyPkg有一个超类Super和一些子类Sub1 Sub2 我的大多数属
  • 如何获取 datetimepicker c# winform 选中/未选中事件

    winforms net的datetimepicker控件中有一个复选框 但我找不到选中或取消选中复选框时触发的事件 有出路吗 但是它确实会触发值更改事件
  • 使用基类指针创建对象时缺少派生类析构函数

    在下面的代码示例中 未调用派生类析构函数 知道为什么吗 我有一个具有虚函数的基类 现在我使用基类指针来创建派生类的新对象 我的理解是 当派生类对象被销毁时 首先调用派生类的析构函数 然后调用基类 但是我只看到基类的析构函数被调用 有谁知道我
  • 删除鼠标悬停时的 Vue 自定义过滤器

    我想使用 VueJS 2 删除鼠标悬停时的截断过滤器 这是模板中的过滤器 div class eng word english truncate div 这是过滤器本身 filters truncate function value let
  • Visual Studio 将 1.1 扩展为 1.1000000000000001

    至少对我来说 这是有史以来最奇怪的 Visual Studio 2010 行为 我正在开发 MVC3 项目 我从另一个项目 也包括 VS2010 MVC1 如果重要的话 复制了一行代码 如下所示 target height height 1
  • 只允许在 datagridview 单元格中键入一些字符

    有没有办法只将某些字符添加到 datagridview 单元格中 像 1234567890 据我所知 您可以使用两种方法来实现此目的 第一个 我认为最好的 是使用 CellValidating 事件DataGridView并检查输入的文本是
  • 正则表达式 VB.Net 正则表达式.替换

    我正在尝试执行一个简单的正则表达式查找和替换 在字符串中的一些数字后面添加一个制表符 如下所述 From a users 12345 badges To a users 12345 badges 我正在使用以下内容 s regex repl
  • .NET 配置(app.config/web.config/settings.settings)

    我有一个 NET 应用程序 它具有用于调试和发布版本的不同配置文件 例如 调试 app config 文件指向开发SQL服务器 http en wikipedia org wiki Microsoft SQL Server它启用了调试并且发
  • 在 JavaScript 中添加事件的最佳方式是什么?

    我发现在 JavaScript 中设置事件有两种主要方法 直接在标签内添加一个事件 如下所示 a href do foo a 通过 JavaScript 设置它们 如下所示 a href do bar a 并在 a 中添加一个事件
  • Haskell/GHC:使用相同模式匹配多个一元构造函数

    所以我正在尝试定义 TrieSet 数据类型 尽管我知道我不需要 http hackage haskell org package TrieMap module Temp where import Data Map data TrieSet
  • PHP 构造函数返回 NULL

    我有这个代码 是否有可能User对象构造函数以某种方式失败 以便 this gt LoggedUser被分配了一个NULL构造函数返回后值和对象被释放吗 this gt LoggedUser NULL if SESSION verbiste
  • 跨线程操作无效 VB.NET

    我浏览了该网站 发现与该主题相关的问题是针对 C 的 我正在维护的应用程序是用 VB NET 编写的 因此 如果我忽略了一个问题 我深表歉意 这是我调用我的线程的地方 Private Sub saveBtn Click ByVal send

随机推荐