Wenn ihm der Bleistift aus der
SDK Doku nicht zusagt, muss er sich eben mein wirres Beispiel antun.
Code:
/*
* Created by SharpDevelop.
* User: Robert
* Date: 19.03.2005
* Time: 20:11 PM
*/
using System;
namespace DelphiPRAXIS.Samples.EventsFürHerrnPuff // ;-)
{
public class EventTest
{
/// <summary>
/// <see cref="EventArgs"/>ableitung, die einen String hält.
/// </summary>
public class MyEventArgs :EventArgs
{
string someString;
public string SomeString
{
get {return someString;}
set {someString = value;}
}
public MyEventArgs(string someString)
{
this.someString = someString;
}
}
/// <summary>
/// Los <see cref="Delegate">Delegatos</see>...
/// </summary>
public delegate void SampleEventHandler(object sender, MyEventArgs e);
/// <summary>
/// Der zu <see cref="EventTest.SampleEventHandler">SampleEventHandler<see/> gehörende <see cref="Event"/>
/// </summary>
/// <param name="e">siehe <see cref="EventTest.MyEventArgs">MyEventArgs</see></param>
public event SampleEventHandler SampleEvent;
/// <summary>
/// Die Methode, die <see cref="EventTest.SampleEvent">SampleEvent<see/> feuert.
/// </summary>
protected virtual void OnSampleEvent(MyEventArgs e)
{
if (SampleEvent != null)
{
SampleEvent(this, e);
}
}
/// <summary>
/// Eine simple Beispielmethode.
/// <remarks>Sie wird eigentlich "Hallo" in die Kommmandozeile ausspucken.
/// dieser Wert kann aber durch den <see cref="EventTest.SampleEvent">SampleEvent<see/> abgefangen und verändert werden.</remarks>
/// </summary>
public void DoSomething()
{
MyEventArgs eventArgs = new MyEventArgs("Hallo");
OnSampleEvent(eventArgs);
Console.WriteLine(eventArgs.SomeString);
}
}
class Program
{
void SampleEventCall(object sender, EventTest.MyEventArgs e)
{
e.SomeString = "Möööp";
}
public void RunSample()
{
EventTest eventTest = new EventTest();
eventTest.SampleEvent += new EventTest.SampleEventHandler(SampleEventCall);
eventTest.DoSomething();
}
public static void Main(string[] args)
{
Program program = new Program();
program.RunSample();
}
}
}