vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

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
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Delegates VB.net1.485Skullsplitter09.09.09 18:13
Re: Delegates VB.net832ModeratorRalf Ehlert09.09.09 19:19
Re: Delegates VB.net760Skullsplitter10.09.09 08:12

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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