C# 调用公共事件以在C中的另一个类中触发方法#

C# 调用公共事件以在C中的另一个类中触发方法#,c#,events,C#,Events,我想问一下这在C#中是否可能发生。到目前为止,我还没有太多的活动 假设我有一个a类订阅了一个表单的表单关闭事件: public class A { private void f_FormClosed(object sender, FormClosedEventArgs e) { //Now here a public Event should be called } } 现在我想举行一个公开活动。假设现在我有另一个B类,它有一个特定的方法 public class

我想问一下这在C#中是否可能发生。到目前为止,我还没有太多的活动

假设我有一个a类订阅了一个表单的表单关闭事件:

public class A
{
   private void f_FormClosed(object sender, FormClosedEventArgs e)
   {
     //Now here a public Event should be called
   }
}
现在我想举行一个公开活动。假设现在我有另一个B类,它有一个特定的方法

public class B
{
  public void DoSomething()
  {
  }
}
现在我想做的是:

表单被关闭,因此类A被通知。在那里,将触发一个公共事件(位于公共类中的某个位置)。我想将类B中的方法订阅到此事件,以便在发生此事件时调用它。这可能吗?语法如何?到现在为止我还没有找到有用的东西

编辑:我不能直接从类A创建类B的实例。

这是可能的

  • 在中创建新事件
  • 在eventhandler中引发事件
    f\u FormClosed
  • 在B中订阅此活动
  • 在B中的eventhandler中调用方法
    DoSomething
  • 对于语法部分,您可以检查

    现在在你的另一节课上做这样的事情

      class EventListener 
       {
         private ListWithChangedEvent List;
    
          public EventListener(ListWithChangedEvent list) 
          {
            List = list;
            // Add "ListChanged" to the Changed event on "List".
            //This is how we subscribe to the event created in ListWithChangedEvent class
            List.Changed += new ChangedEventHandler(ListChanged);
          }
    
         // This will be called whenever the list changes.
         private void ListChanged(object sender, EventArgs e) 
         {
          Console.WriteLine("This is called when the event fires.");
         }
     }
    
    这是可能的

  • 在中创建新事件
  • 在eventhandler中引发事件
    f\u FormClosed
  • 在B中订阅此活动
  • 在B中的eventhandler中调用方法
    DoSomething
  • 对于语法部分,您可以检查

    现在在你的另一节课上做这样的事情

      class EventListener 
       {
         private ListWithChangedEvent List;
    
          public EventListener(ListWithChangedEvent list) 
          {
            List = list;
            // Add "ListChanged" to the Changed event on "List".
            //This is how we subscribe to the event created in ListWithChangedEvent class
            List.Changed += new ChangedEventHandler(ListChanged);
          }
    
         // This will be called whenever the list changes.
         private void ListChanged(object sender, EventArgs e) 
         {
          Console.WriteLine("This is called when the event fires.");
         }
     }
    


    我可以回答这个问题,但当你说你在网上没有找到有用的东西时,我觉得你是不现实的。事件自C#成立以来就一直存在,因此15多年来就有关于这个主题的文章。是的,我知道。我所发现的只是在类A中创建类B的实例时如何触发事件。我读了很多书,但仍然有问题。请帮帮我:/我真的相信你希望我们节省你的时间并得到一个总结。有很多关于事件的文章。只需使用谷歌搜索这些关键词:“c#events codeproject”,看看会发生什么……不。我试了很多次,最后我问了这里。我的问题是,我无法在类A中创建类B的实例。我试图创建一个公共委托,但最终我不知道如何正确地将类B的类订阅给该委托人,所以请向我们展示代码。我可以回答这个问题,但当你说你在网络上没有发现有用的东西时,我觉得你是不现实的。事件自C#成立以来就一直存在,因此15多年来就有关于这个主题的文章。是的,我知道。我所发现的只是在类A中创建类B的实例时如何触发事件。我读了很多书,但仍然有问题。请帮帮我:/我真的相信你希望我们节省你的时间并得到一个总结。有很多关于事件的文章。只需使用谷歌搜索这些关键词:“c#events codeproject”,看看会发生什么……不。我试了很多次,最后我问了这里。我的问题是,我无法在类A中创建类B的实例。我试图创建一个公共委托,但最终我不知道如何将类B的类正确订阅到此委托。请向我们展示代码。语法如何?我有一些问题需要解决。在这里检查这个例子@Conax查看如何订阅事件的编辑这不起作用,因为我无法在构造函数中将类A的实例传递给类B。类B的实例是由另一个类创建的。谁创建您的实例并不重要。您需要一个类A的实例来订阅它的事件。语法如何?我有一些问题需要解决。在这里检查这个例子@Conax查看如何订阅事件的编辑这不起作用,因为我无法在构造函数中将类A的实例传递给类B。类B的实例是由另一个类创建的。谁创建您的实例并不重要。您需要类A的实例来订阅其事件。