У меня есть 3 класса, один класс вызывает событие, другой вызывает отправителя обработчика события и, наконец, последний получает событие.Однако обработчик события в классе отправителя всегда равен null
, поэтому получатель никогда не обрабатывает событие.Я не могу понять, почему это null
, поскольку я назначаю его как StartEventHandler
, как показано ниже.
Я попытался ввести операторы отладки, чтобы понять, почему обработчик никогда не запускался, и обнаружил, что он никогдапопадает в класс С.
Первый класс вызывает событие:
Class A {
public void Button_Click(object sender, RoutedEventArgs e)
{
B senders = new B();
senders.OnPageSwap(new StartEventArgs());
}
}
Второй класс - отправитель
public delegate void StartEventHandler(object sender, StartEventArgs e);
public class B
{
public event StartEventHandler PageSwap;
public virtual void OnPageSwap(StartEventArgs e)
{
Console.WriteLine("Entered PageSwapSender");
if(PageSwap != null) PageSwap(this, e);
}
}
Третий класс - получатель
Class C {
B sender = new B();
void Connect()
{
sender.PageSwap += new StartEventHandler(this.sender_PageSwap);
Console.WriteLine("Entered Connect");
}
private void sender_PageSwap(object sender, StartEventArgs e)
{
Console.WriteLine("Entered Handler");
}
}
Может кто-нибудь сказать мне, почему PageSwap
в class B
всегда null
, следовательно, никогда не работает PageSwap(this, e)
.