How to pass event between classes?
I know this sounds ridiculous (and it does), but I have been stumped about this recently. The search did not raise a similar question, so I decided that I would position it.
Here are the objects:
WinForm -> Speaker -> Tweeter
-> Woofer
[Speaker, Tweeter, Woofer] all announce the "SpeakToMe" event, which sends a simple string message. Events are declared using a standard template:
public delegate void SpeakToMeHandler(object sender, SpeakToMeEventArgs e);
public event SpeakToMeHandler SpeakToMe;
protected virtual void OnSpeakToMe(string message)
{
if (SpeakToMe != null) SpeakToMe(this, new SpeakToMeEventArgs(DateTime.Now.ToString() + " - " + message));
}
SpeakToMeEventArgs is a simple class that inherits from EventArgs and contains a Message property.
At their discretion, each of these events works great. For example, I set a button on the form to create, sign, and trigger an event for [Speaker, Tweeter, Woofer]. Each report is returned correctly.
, Speaker [Tweeter, Woofer] .
, [Tweeter, Woofer] , . , :
void tweeter_SpeakToMe(object sender, SpeakToMeEventArgs e)
{
Console.Out.WriteLine("the tweeter is speaking: " + e.Message);
this.OnSpeakToMe("tweeter rockin' out [" + e.Message + "]");
}
( ), Console.Out.WriteLine . OnSpeakToMe, , null.
Speaker SpeakToMe . , .
, , ?
Btw, , . [Speaker, Tweeter, Woofer] - . .
, !
: . ! (@David Basarab @Brian) , . , !