Laden...

Load-Event bei einer TabPage

Erstellt von Thron vor 6 Jahren Letzter Beitrag vor 6 Jahren 2.741 Views
T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren
Load-Event bei einer TabPage

Hallo an Alle,

habe eine Frage und komme irgendwie nciht weiter.
Ich habe mir einen TabControl mit drei Pages erstellt, nun möchte ich gerne eine Code ausführen wenn die Page 3 ausgewählt wird. Leider funktioniert das nicht so wie ich mir das vorstelle.

Es gibt für die TabPage3 kein Ereignis "Load", sondern nur "Paint" und dieses ruft meinen Code scheinbar mehrmals auf.

Wie realsiere ich denn am Besten, dass wenn ich die TabPage3 anklicke, dass mein Code auch nur einmal ausgeührt wird?

Viele Dank für Eure Hilfe...

Gruß an Alle..,,,

16.807 Beiträge seit 2008
vor 6 Jahren

Auf den SelectedIndex reagieren und dann Dein Zeugs laden, sofern es sich um den ersten Aufruf handelt.
Dafür musst Du eben die Informationen nach dem ersten Laden zwischenspeichern und bei den folgenden Aufrufen darauf zugreifen statt neu erzeugen.... einfaches Caching eben.

T
Thron Themenstarter:in
63 Beiträge seit 2017
vor 6 Jahren

hallo...

ich kann Dir nciht ganz folgen!? Selected Index bedeutet was genau? Muss ich nicht irgednwie in den Ereignissen der TabControls bzw. der einzlenen Register ansetzten?? Bin verwirrt....

Gruß

1.040 Beiträge seit 2007
vor 6 Jahren
16.807 Beiträge seit 2008
vor 6 Jahren

Du musst Dir das selbst bauen; sowas kann die TabPage nicht von Haus aus.

Das bedeutet beim ersten Aufruf musst Du ein Objekt erstellen, das all Deine Informationen erzeugt und dann cached.
Alle weiteren Aurufe des Tabs erzeugen dann nicht mehr ein neues Objekt, sondern verwenden dann die Informationen aus dem Cache.

Und für den Aufruf reagierst Du eben auf das Event von Selected(Index).
Paint ist die falsche Baustelle.

Und "Cache" steht hier äquivalent einfach für ein Objekt; zB. mit dem Singleton Pattern o.ä.
Da führen hunderte Wege nach Rom.

2.298 Beiträge seit 2010
vor 6 Jahren

Neben dem Ansatz mit dem SelectedIndexChanged bietet sich eventuell auch ein UserControl an?
UserControl unterstützt Load und wird exakt einmal aufgerufen. Dort kannst du dich dann auch an das Event hängen.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

4.931 Beiträge seit 2008
vor 6 Jahren

Aber das Load-Event des UserControls würde schon direkt bei der Instantiierung aufgerufen werden (nicht erst, wenn die TabPage selektiert wird).

2.298 Beiträge seit 2010
vor 6 Jahren

Aber das Load-Event des UserControls würde schon direkt bei der Instantiierung aufgerufen werden (nicht erst, wenn die TabPage selektiert wird).

Das widerspricht meinen Erfahrungen mit UserControls auf TabPages. - Das Load wird in allen Anwendungen, die ich derart aufgebaut habe immer erst nach Auswahl der Registerkarte ausgeführt.

Wissen ist nicht alles. Man muss es auch anwenden können.

PS Fritz!Box API - TR-064 Schnittstelle | PS EventLogManager |

4.931 Beiträge seit 2008
vor 6 Jahren

Stimmt, es wird erst aufgerufen, wenn das Control-Handle erzeugt wird (also wenn das Control angezeigt werden soll).

Es ist sowieso ein gutes Design, wenn je TabPage ein eigenes UserControl benutzt wird.