|
| |

VB.NET - Ein- und Umsteiger| Delegates VB.net | |  | | Autor: Skullsplitter | | Datum: 09.09.09 18:13 |
| Hallo!
Ich habe in der Schule circa 1 Jahr VB.Net und 2 Jahre C#.Net gelernt. Nun möchte ich privat meinen Horizont noch ein bisschen erweitern und habe mir ein kleines Projekt als Ziel gesetzt, damit ich für mich selbst noch ein bisschen etwas dazu lerne.
Und zwar geht es um folgendes:
Ich lese diverse Informationen aus einer Datenbank aus und bastle mir danach eine HTML Seite zusammen und speichere diese. (Bitte jetzt keine Einwendungen wie: schonmal was von ASP.NET gehört ;))
Dazu habe ich eine Klasse HTMLFileCreater geschrieben, welche im großen und ganzen das bewerkstelligt.
Nun möchte ich aber in meiner Form den aktuellen Status anzeigen lassen.
Ich habe mir da 2 Möglichkeiten überlegt:
a) mit Progressbar
b) mit einem Label der z.B. ausgibt: Datei 1 von 12 gespeichert
Das Problem:
Ich instanziere meine Klasse und danach frage ich ab, welche der 3 verschiedenen Daten aus der Datenbank ausgelesen werden sollen (mittels RadioButtons) und rufe eben den Konstruktor auf.
Das ganze lt. dann wie folgt:
dim htmlFileCreat as HTMLFileCreater
....
if rbA.Checked then
htmlFileCreat = new HTMLFileCreater(...)
Else If rbB.Checked then
.... So. Der Rest wird alles in der Klasse HTMLFileCreater verarbeitet und solange nicht alle Dateien angelegt wurden, kommt der auch nicht mehr in die Main zurück. Grund dafür: es wird automatisch im Konstruktor bereits die relevante Funktion aufgerufen und alles in die Wege geleitet +g+
An dieser Stelle habe ich mich gefragt, wie ich am besten den Label bzw. ProgressBar aktualisieren könnte.
In der Klasse HTMLFileCreater läuft der Prozess, dass die Dateien angelegt werden, in einer While Schleife.
Nur wie kann ich der Main Klasse (bzw. der Form) mitteilen, dass es den Label bzw. den ProgressBar aktualisieren soll?
An dieser Stelle dachte ich an Delegates. Ich könnte immer, wenn eine neue Datei angelegt wurde ein Event auslösen. Ich habe viel mit ihnen in C# zu tun gehabt, doch ich kapiere irgendwie die Tutorials, die beschreiben wie das Ganze in VB.Net abläuft, nicht wirklich.
In meiner Klasse HTMLFileCreater erzeuge ich den Delegate:
Public Class HTMLFileCreat
....
'Delegate
Public Delegate Function AnzMaxFileHandler() As Integer
....
End Class Soweit hätte ich es kapier... ^^
In C#.Net würde nun die deklaration der Events erfolgen z.b
public event AnzMaxFileHandler AktAnzFiles;
public event AnzMaxFileHandler MaxAnzFiles;
Auslösen würde man sie z.B. so:
if(AktAnzFiles != null) AktAnzFiles;
In der Main würde man die Events abonieren z.B. (C#)
htmlFileCreat.AktAnzFiles += new HTMLFileCreat.AnzMaxFileHandler(htmlFileCreat_AktAnzFiles)
....
Schlussendlich würde dann in der Main noch eine dementsprechende Funktion benötigt, die eben dann die Ausgabe macht.
(Bitte dieses C#.Net Beispiel nicht zu genau nehmen, wie gesagt es ist ein Beispiel!
Kann mir da vielleicht einer weiter helfen, wie ich das in VB.NET umlegen könnte?
Über andere Lösungsvorschläge, wie ich z.B. den Progressbar oder den Label in der Main über die Klasse HTMLFileCreater steuern könnte, bin ich auch sehr dankbar!
Anmerkung: die Klasse HTMLFileCreater liegt in einer seperaten Datei.
Vielen herzlichen Dank!
Gruß,
Stefan |  |
 | Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
  |
|
Neu! sevEingabe 3.0 
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere InfosTipp des Monats TOP Entwickler-Paket 
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR...
Jetzt nur 979,00 EURWeitere Infos
|
| |
|
Copyright ©2000-2025 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|