Form erst laden dann anzeigen?

PhilippStr

Grünschnabel
Hallo liebe Comunity,

ich bin noch relativ neu in der Entwicklung und ich habe eine Frage zu den Windows Forms:

Es geht darum, dass ich eine mehrere Forms mit verschiedenen Buttons und eigenschaften habe. Ich lasse immer eine Form auf dem Bildschirm anzeigen und ich kann mit den Buttons auf meine anderen Forms wechseln. Dies geschieht indem ich die Methone .Hide(); von der momentan angezeigten Methode aufrufe und dann die .Show() Methote von der Form, die angezeigt werden soll. Das Problem dabei ist, das der Benutzer immer sieht, wie sich die Seite aufbaut. Das find ich sehr unschön. Gibt es da eine Methode die ich benutzen kann, die die Form quasi zuerst läd und danach wenn sie vollständig aufgebaut ist anzeigt?


ich glaube ich hab den Fehler... es liegt nicht an dem Form, sondern an den Controls die ich benutze... die wurden von jemand anderem geschrieben... kennst da evtl jmd eine möglichkeit wie ich sie erst laden lassen kann und dann anzeigen?

grüße
 
Hi und willkommen

Was du da siehst, ist das Zeichnen der Form. Dies kannst du nicht unterbinden.
Aber ich wenn du nur die Form versteckst sollte dies eigentlich nicht passieren.
Was genau ist aber unter "man sieht wie sich die Seite aufbaut" zu verstehen?
Ist der Rechner zu alten/langsam?
 
nee mein PC ist nichtmal 1 Jahr alt. Jemand anderes den ich kenne hatte mir gesagt, das es an den Controls liegt, die ich da eingebunden habe. Man sieht wie sie sich zeichnen. Warum wusste er auch nicht. Das Form selber taucht sofort auf und bei den Seiten, die diese Controls nicht haben, läuft auch alles wie geschmiert.
Es sieht halt nicht wirklich Professionell aus, wenn die Seite quasi "laggt". Keine ahnung wie man das unterbinden kann =(
 
Hi

Sind das Standard .NET Controls oder Control, die du selbst zeichnest?
Hast du die Methode InitializeComponent geändert? Am Anfang der Methode sollte hier Suspend- und am Ende ResumeLayout aufgerufen werden.
 
Guten Morgen,

Also es sind keine Standart .NET Controls. Wie gesagt die hat ein ex-Kollege iwann mal geschrieben (Ich hoffe das hast du mit deiner Frage gemeint). Nun ändere ich sein altes Programm, die Steuerelemente sollen aber beibehalten werden.
Ich habe grade mal in die Initialize Methode reingeschaut und da wird einmal this.SuspendLayout() am Anfang und einmal this.ResumeLayout(false) am Ende aufgerufen. Also daran liegt es wohl nicht =(

Ich habe auch noch was anderes... eine kleinigkeit: ich benutze auf einer meiner Form auch einen "Tank" von NationalInstruments. den habe ich horizontal ausgerichtet und lasse mir darauf, momenten noch, Zufallswerte anzeigen. Manchmal kommt es vor, dass dann linka, also da, wo der kleinste Wert steht, ein roter Balken auftaucht (ca. 2mm) groß und dann erst mit meiner Füllfarbe (blau) fortgesetzt wird. Ich arbeite mit einer Scala von -10 bis 10, konnte bisher aber keine Logic darin feststellen.

lg
Philipp
 
Zuletzt bearbeitet:
Was machen die Controls?

Müssen die ev. Daten aus einer DB holen und die DB Verbindung wird für jedes Control neu geöffnet?

Oder kommt dieses zeichnen lagg dadurch das das Control selbst gezeichnet wird wird (meine hier wirklich mit dem Graphics Objekt).

Ich glaube ohne Screen und/oder Code kommen wir nicht weiter.
 
Also es ist so, dass ich einen thread laufen habe der mir Daten von einem Server holt. Dieser thread aktualisiert die daten, die auf den Controls angezeigt werden, immer nur dann, wenn die Form NICHT angezeigt wird. Also wenn die Form angezeigt wird, passiert gar nichts, solange man auch kein Event startet.

Diese Zeile steht in dem Designer zum zeichnen
Code:
this.digitalInput1.Size = new System.Drawing.Size(192, 304);

Also vllt ist hier auch ein bißchen ein falscher Eindruck entstanden... Das "zeichnen" was man sieht dauert vllt 500ms und nicht länger. Es ist kein großes Problem für die Anwendung... Bloß es stört mich und mich interissiert warum das so ist.

Was für Codestücke soll ich denn Zeigen? die von dem Control selbst?
danke für eure mühen

lg
 
Bei dem von dir geposteten Codeschnippsel wird nur die Größe des Controls gesetzt. Das muss aber sowieso immer gemacht werden.
Der Code aus der Designer.cs ist auch nicht das wichtige hier. Wichtig ist der Code der UserControls.
Wie werden die gezeichnet? Was passiert beim Laden der Form und der Controls?....
 
Also in dem Code der Controls wird nichts gezeichnet. Das übernimmt alles der Designer für mich in den Control-Code passiert nichts interessantes.
Vllt könnte es auch daran liegen, dass ich das Control, dass ich letztendlich auf dem Bildschirm anzeige aus verschiedenen anderen Controls besteht und sich dann erst zusammen setzen musst? jedes Control wird aus 3 kleineren Controls zusammen gesetzt...
Ich bin am überlegen ob ich das Control einfach selber nochmal neu schreibe und dann nach und nach teste, wann es anfängt zu haken dann kann ich euch das vllt genauer beschreiben?!

lg
 
Mich irritiert etwas das Daten erst geladen werden wenn das Form nicht sichtbar ist.

Heißt das im Prinzip wenn das Form aktiviert wird, wird der Thread gestartet, die Daten geholt und dann das Control angezeigt / neu gezeichnet?
 

Neue Beiträge

Zurück