Einzelnen Beitrag anzeigen

MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: C# Eigenes Ereiegnis für eine Klasse

  Alt 15. Mär 2005, 15:47
Du hast doch sicher das deutsche .NET-Framework SDK? Dann schau mal bitte unter folgendem Link rein:
Code:
ms-help://MS.NETFrameworkSDKv1.1.DE/cpguidenf/html/cpconprovidingeventfunctionality.htm
Da wird gezeigt, wie man ein eigenes Ereignis mit eigenen Werten usw. erzeugt und auslöst. Ich habe ein ähnliches Prinzip (wenn auch einfacher) bei meinem Help 2.0-Dienst benutzt. Wenn du bspw. die Auswahl der Filter-Combobox im Inhaltsverzeichnis änderst, dann sollen das die Pads für den Index und die Suche mitkriegen und ihre Comboboxen entsprechend anpassen. Und dazu habe ich auch ein Ereignis benutzt. Allerdings brauchte ich keine speziellen Werte. Du allerdings schon, denn ich vermute, du willst den Progressstatus an- bzw. übergeben.

Bei mir sieht´s halt so aus:
Code:
public string FindFilterQuery(string filterName)
{
   if(String.Compare(filterName,currentSelectedFilterName) != 0)
   {
      currentSelectedFilterName = filterName;

      // Ereignis auslösen
      OnFilterQueryChanged(EventArgs.Empty);
   }

   // ... anderer Code ...
}

public event EventHandler FilterQueryChanged;

protected virtual void OnFilterQueryChanged(EventArgs e)
{
   if(FilterQueryChanged != null) {
      FilterQueryChanged(this, e);
   }
}
Du müsstest dein Ereignis an dem Punkt auslösen/aufrufen, an dem sich die Bearbeitung der Datei in irgendeiner Form ändert. Ich denke, irgendwo hier:
Code:
pf.Write(ByteArray, 0, BytesRead);

PS: Das Benutzen habe ich wieder vergessen. Ist auch ganz einfach. Da das Ereignis von meinem Dienst zur Verfügung gestellt wird, schreibe ich eine Zuweisung:
Code:
// h2env ist meine Dienstklasse "HtmlHelp2Environment"
h2env.FilterQueryChanged += new EventHandler(OnFilterQueryChanged);
und die passende Funktion
Code:
private void OnFilterQueryChanged(object sender, EventArgs e)
{
   mainPanel.Refresh();
   filterCombobox.SelectedIndex = filterCombobox.Items.IndexOf(h2env.CurrentFilterName);
}
und das war´s. Das wäre jetzt ein Auszug aus dem Suchpad; sprich: einer eigenen Klasse (bei dir mit deinem WinForms-Teil vergleichbar).
  Mit Zitat antworten Zitat