Skip to main content

Klassen und Events

Klassen und Events

CSharp bietet die elegante Möglichkeit, in Klassen aufgerufenen Methoden dem Programm Informationen über Events zurückzugeben. In Verbindung mit Threads, kann somit ein sehr übersichtlicher Informationskreislauf erstellt werden.

Die Aufrufende Klasse

Folgende Methode ruf über das Objekt "testText" die Methode "GibText" auf.

public void TextAbrufen()
{
  // Objekt initialisieren
  TextKlasse testText = new TextKlasse();
 
  // Event zuweisen
  testText.NeuerTextEvent += new EventHandler(MeinTextEvent);
 
  // Methode aufrufen
  testText.GibText("meinText");
 
  // Eventzuweisung entfernen
  testText.NeuerTextEvent -= MeinTextEvent;
 
  // Objekt nullisieren
  testText = null;
}
 
private void MeinTextEvent(object sender, TextEvent te)
{
  textBox.Text = te.Text;
}

Die "TextKlasse"

Die TextKlasse enthält die Funktion "GibText" und das entsprechende Event.

public class TextKlasse
{
  #region Constructor
 
  public TextKlasse()
  {
 
  }
 
  #endregion
 
  #region Public methods
 
  public void GibText(string meinText)
  {
    NeuerTextEvent(this, new TextEvent(meinText));
  }
 
  #endregion
 
  #region Events
 
  public event EventHandler NeuerTextEvent;
 
  #endregion
 
}

Die Event-Klasse

Wir benötigen als Informationsträger eine Klasse, diese ist wiederum von der Klasse "EventArgs" abgeleitet.

public class TextEvent : EventArgs
{
 
  #region Member vars
 
  private string _text;
 
  #endregion
 
  #region Constructor
 
  public TextEvent(string text)
  {
    _text = text;
  }
 
  #endregion
 
  #region Public fields
 
  public string Text
  {
    get { return _item; }
  }
 
  #endregion
 
}

Diese Klasse enthält die member Variable "_text". Über den Konstructor wird sie mit bei der Erzeugung der Klasse mit Daten gefüllt. Über das public Field geben wir der aufrufenden Klasse die Möglichkeit diese Variable abzufragen. Wir behalten uns über dieses public Field vor, die Textvariable unseren bedürfnissen vor der Ausgabe zu verändert. Natürlich ist es dem Programmierer überlassen, wie er Variablen definieren möchte.