Laden...

Die Dauer eines Form lade Prozesses ermitteln

Erstellt von Dolce vor 12 Jahren Letzter Beitrag vor 12 Jahren 1.580 Views
Thema geschlossen
D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 12 Jahren
Die Dauer eines Form lade Prozesses ermitteln

Hallo Forum

Ich möchte in meiner Applikation, das Laden von Forms in einer ProgressBar Abbilden. Da ich leider keine passenden Code snipped‘s oder Erläuterungen zu dieser Thematik gefunden habe und momentan etwas auf dem Schlauch stehe, erhoffe ich mir auf diesem Weg einen/einige Hinweise zu erhalten. Da ich die Zeitdauer vor dem Laden noch nicht kenne und berechnen kann, habe ich mir gedacht, dass ich meine Anforderung mittels Installationsfortschritt bewältigen könnte. Sprich, ich kupfere den Teil von diesem Lösungsansatz ab, welcher den Installationsfortschritt misst. Nur finde ich hierzu nichts passendes.
Am Ende soll eine ProgressBar den Fortschritt des zu ladenden Forms anzeigen.

Marquee bringt nicht das gewünschte Ergebnis..

Gruss Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

F
10.010 Beiträge seit 2004
vor 12 Jahren

Eine Form braucht nie lange zum laden.

Entweder es sind die zu ladenden Daten oder du machst irgendwas, das diesen Prozess verlängert.

Was tust du also?
Und vorsorglich schon mal unsere FAQ und Artikel durchgesehen?

G
538 Beiträge seit 2008
vor 12 Jahren

Also - die Initialisierung (InitializeComponent()) ist eher schwer abzuschätzen - wobei du zählen könntest wieviele schon initialisiert wurden, wenn du sie zunächst mal an Form.Controls vorbeilenkst und dabei zählst.

Falls du Daten lädst (was du im eventuell im onLoad-Event tun solltest) kannst du dort ebenfalls zählen ...

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

107 Beiträge seit 2011
vor 12 Jahren

Das Initialisieren wird doch nicht so lang dauern, das es eine Progressbar rechtfertigt.

Ansonsten könnte man ControlAdded abonnieren, aber viel Sinn ergibt das für mich nicht.

q.e.d.

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 12 Jahren

Das eine Form instanzierung im eigentlichen Sinne nicht lange Dauert ist mir bewusst(kommt aber immer auf den Inhalt der Form an). jedoch in meinem Fall ist es etwas anders.
Ich will eine Form instanzieren, welches ein TabControl instanziert (ca 15) Register. Darin sind etliche Controls instanziert die schon zu begin via StoredProc befüllt werden müssen. Von denen habe ich drei solche Forms in meiner Appi.

@Grumbler85: Hast Du mir zu deinem beispiel einen link welcher mir deine Variante etwas genauer erläutert?

Gruss Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

G
538 Beiträge seit 2008
vor 12 Jahren

Naja - im allgemeinen weißt du nicht wie lange etwas dauern wird - es ist auch unrealistisch das zu schätzen, da die Einflussfaktoren viele sind.
Was aber geht ist entweder (wie der Troll sagt) das ControlAdded event zum Zählen benutzen (du weißt ja wieviele Controls es am Ende sein sollen)

Oder aber du modifizierst das Laden:

Mach dir ein Event (FormReady), dass du sendest, wenn alles geladen ist.
Deine Progressbar kann das abonnieren und dann Form.Show() auslösen.
ein weiteres Event (FormProgress) kann deine Progressbar über den aktuellen Zustand des ladens informieren.
Die Daten laden kannst du dann entweder im Konstruktor oder in einer eigenen Funktion und ich würde dir empfehlen die Events in einem Interface zu definieren, damit du es für mehrere Forms nutzen kannst.

Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann - umgekehrt ist das schon schwieriger (K. Tucholsky)
Das Problem mit Internet-Zitaten ist, dass sie oftmals zu unrecht als authentisch angenommen werden. (K. Adenauer)

107 Beiträge seit 2011
vor 12 Jahren

Das eigentlich Problem scheint eher das Befüllen der Controls zu sein.

Hier würde ich eher Laden der Forms und Befüllen der Controls voneinander trennen.

q.e.d.

F
10.010 Beiträge seit 2004
vor 12 Jahren

@Dolce:
Du hast es doch selber gesagt, es ist nicht das laden der Form sondern der Daten.
Und da bist du der einzige der da sagen kann woher die Daten kommen, wie gross die Daten sind usw.

SP? Warum? Vorgegeben?

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 12 Jahren

MultiColumnComboBoxen sowie Single ComboBox und Gridviews müssen für den Anwender vorgängig abgefüllt sein. da es sich um Formular Informationen handelt, welche später in ActiveReports 6.0 Abgebildet werden. Und die Informationen hohle ich via Stored Procedure von der MSSQL DB welche je nach Control unterschiedlich sind.
Und natürlich Fehlerquellen eliminieren damit der User keine/ respektive weniger Fehleingaben machen kann

Gruss Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

49.485 Beiträge seit 2005
vor 12 Jahren

Hallo Dolce,

ad 1. trenne Laden das der Daten und von den GUI-spezifischen Aktionen. Wie das geht, steht in [FAQ] Warum blockiert mein GUI?

ad 2. Reduziere die Anzahl der Controls. In einem TabControl musst du z.B. nur die erste bzw. die gerade angezeigte Seite mit Controls füllen. Alle anderen können und sollten leer bleiben. Wenn man GUI und Datenhaltung getrennt hat, ist es auch kein Problem, wenn nicht immer alle Controls vorhanden sind.

Das ist aber in der FAQ beschrieben oder sowieso Standard.

herbivore

D
Dolce Themenstarter:in
206 Beiträge seit 2009
vor 12 Jahren

Hallo zusammen

Vielen Dank für die rasche Hilfestellung. Ich habe Die Implementierung nun so vorgenommen wie es Grumbler85 vorgeschlagen hat. Funzt super danke.

Auch an alle andern vielen dank für die raschen Hilfestellungen.

Gruss Dolce

Wer Rechtschreibfehler findet, darf sie behalten.

Thema geschlossen