如何访问另一个类中的事件处理程序
本文关键字:事件处理 程序 另一个 何访问 访问 | 更新日期: 2023-09-27 18:32:28
>我在类 A 中有一个带有一些逻辑的单击事件处理程序。现在我想从 B 类访问 A 类事件处理程序并执行一些逻辑,以便 B 类事件 hadler 逻辑首先触发,然后触发 A 类事件处理程序。
例:
Class A
private void calculate_Click(object sender, System.EventArgs e)
{ this.MyMethod(); }
Class B
private void calculate_Click(object sender, System.EventArgs e)
{ // My new code.. (This should trigger first) this.MyMethod(); }
您可以使用由类 A 公开并由类 B 使用的事件,就像我们对 Button 类所做的那样。 按钮公开点击事件,在我们的窗体类中,我们订阅由 Button 类公开的点击事件。
我在这里找到了这个简单的例子来理解
using System;
namespace wildert
{
public class Metronome
{
public event TickHandler Tick;
public EventArgs e = null;
public delegate void TickHandler(Metronome m, EventArgs e);
public void Start()
{
// while (true) //uncomment this line if you want event to fire repeatedly
{
System.Threading.Thread.Sleep(3000);
if (Tick != null)
{
Tick(this, e);
}
}
}
}
public class Listener
{
public void Subscribe(Metronome m)
{
m.Tick += new Metronome.TickHandler(HeardIt);
}
private void HeardIt(Metronome m, EventArgs e)
{
System.Console.WriteLine("HEARD IT");
}
}
class Test
{
static void Main()
{
Metronome m = new Metronome();
Listener l = new Listener();
l.Subscribe(m);
m.Start();
}
}
}
假设类 B 的实例成员A instanceOfClassA
使用 A 的实例正确启动:
private void calculate_Click(object sender, System.EventArgs e)
{
// My new code.. (This should trigger first)
instanceOfClassA.MyMethod();
// other code
}
您也可以考虑从 A 继承类 B:
class B:A
{
private void calculate_Click(object sender, System.EventArgs e)
{
// My new code.. (This should trigger first)
this.MyMethod(); // will come from base class A implementation.
// other code
}
}