Einzelnen Beitrag anzeigen

Robert_G
(Gast)

n/a Beiträge
 
#9

Re: C# Eigenes Ereignis für eine Klasse

  Alt 19. Mär 2005, 20:23
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();
      }
   }
}
  Mit Zitat antworten Zitat