我想在C#中询问这是否可能是事件。到目前为止,我对事件的工作并不多。
假设我有一个订阅FormClosing事件的类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类实例。
答案 0 :(得分:3)
它可能。
f_FormClosed
DoSomething
对于语法部分,您可以检查MSDN
// A delegate type for hooking up change notifications.
public delegate void ChangedEventHandler(object sender, EventArgs e);
// A class that works just like ArrayList, but sends event
// notifications whenever the list changes.
public class ListWithChangedEvent: ArrayList
{
// An event that clients can use to be notified whenever the
// elements of the list change.
public event ChangedEventHandler Changed;
// Invoke the Changed event; called whenever list changes
protected virtual void OnChanged(EventArgs e)
{
if (Changed != null)
//you raise the event here.
Changed(this, e);
}
}
现在在你的其他班级做这样的事情
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.");
}
}