【问题标题】:How do I add an event listener in VSCode?如何在 VSCode 中添加事件监听器?
【发布时间】:2021-04-14 18:42:51
【问题描述】:

我正在尝试使用 VSCode 订阅事件(添加事件侦听器)。在 Visual Studio 中,我会执行以下操作来订阅...

//Subscribe to sql events
myClassObj.MySQLEvents += MyModule_MySQLEvents;

如果要退订,我会使用...

//Unsubscribe from sql events
myClassObj.MySQLEvents -= MyModule_MySQLEvents;

通常,在键入myClassObj.MySQLEvents += 之后,VS 会开始自动添加事件处理程序方法的模板,帮助您命名它等等。但是,使用 VSCode 我键入相同的内容,它什么也不做(就 IntelliSense/自动完成而言)去)。有没有办法我应该在 VSCode 中做不同的事情?

此外,当我尝试手动添加事件侦听器,然后尝试添加以下回调方法以触发事件时,我收到错误。

private void MyModule_MySQLEvents(object sender, EventArgs e) {}

我得到的错误是 csharp(CS0120)...

非静态字段、方法或 属性“Program.MyModule_MySQLEvents(对象,EventArgs)” [我的申请]

注意:不确定是否重要,但我是第一次在控制台应用程序中尝试此操作(在 Main() 方法内)。通常,当它在 VS 中为我​​工作时,我会在 Form 构造方法中执行此操作。

【问题讨论】:

  • 我不确定这是否重要,但是,控制台应用程序不是事件驱动的环境。所以,我猜你不会得到 VS 的“自动”生成代码的奢侈。我敢打赌,在这种情况下,您将需要手动订阅和实现事件签名。
  • 我认为这与我的控制台应用程序的 Main() 方法是 STATIC 的事实有关。我收到错误 An object reference is required for the non-static field, method, or property.
  • 如果这适用于您使用 win forms 应用程序...您是否考虑过创建 win forms 应用程序然后将应用程序输出设置为控制台。这很奇怪,我同意,但它应该可以工作并为您提供您所描述的自动生成代码。我假设代码的作用未知。
  • 我只是说,鉴于控制台应用程序不是事件驱动的,您可能需要跳过一些环节才能使事件正常工作。如果您使用 win forms 应用程序,这将不是必需的,您尝试实施的事件将更适合环境。同样,在不知道代码在做什么的情况下,这完全是猜测。
  • 之前,我使用 Visual Studio 2019 来获得这种效果。现在我使用 Visual Studio Code 作为 IDE,到目前为止,这是一个完全不同的世界。从未在 VSCode 中创建过表单应用程序。不确定我是否会得到相同的结果。我真的只是在寻找有关某人如何将事件侦听器添加到 VSCode 中的控制台应用程序的指导。

标签: c# visual-studio-code event-listener


【解决方案1】:

您可以只输入一个新函数名称,然后使用“显示修复”(灯泡)来生成该函数,或按 Ctrl+

【讨论】:

    【解决方案2】:

    所以我认为 Intellisense 不会像 Visual Studio 那样自动创建新的事件处理程序。我最终不得不自己创建它,我得到的错误是因为控制台应用程序使用静态构造函数。

    我最终需要像这样将static 关键字添加到我的回调方法中......

    private static void MyModule_MySQLEvents(object sender, EventArgs e) {}
    

    这按预期工作,没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-25
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多