Autor Beitrag
Joey86
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Do 16.09.10 11:25 
Moin!

Ich hab ein Problem mit meinem TabControl bzw. mit den darauf liegenden TabPages...sie bauen sich einfach zu langsam auf.
Wenn ich das Programm zum ersten Mal starte, dann ist das ja nicht so schlimm, aber wenn ich das zwischen den verschiedenen TabPages wähle und es müssen noch immer irgendwelche Buttons oder Labels gezeichnet werden, dann nervt das einfach. Das ist natürlich auch nur der Fall, wenn sich auf dem TabPage viele Elemente befinden.
Gibt es aber keine Möglichkeit das zu unterdrücken und ggf. auf ein einmaliges (langes) Laden zu beschränken?

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.09.10 12:12 
Zitat:
Gibt es aber keine Möglichkeit das zu unterdrücken und ggf. auf ein einmaliges (langes) Laden zu beschränken?


Auf überfüllte Tabpages verzichten? Ist eh besser für den User und besser für die Repaint Zeiten.

Wenn du dich wirklich davon überzeugt hast das es nicht an eigenem Code liegt den du beim Tabwechsel oder beim sichtbar werden bestimmter Controls selbst dran programmiert hast wäre noch zu prüfen ob es auch ohne dranhängenden Debugger (also mal ohne Visual Studio starten wenn du das noch nicht getan hast) zu langsam ist. Der Debugger verlangsamt, insbesondere die graphische Darstellung von Winforms, erheblich.
Joey86 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Do 16.09.10 13:47 
Also ohne den Debugger hab ich es schon probiert, das bringt nichts oder nur wenig.


Auf TabPages verzichten? Mhh...ich vermute mal, dass Windows Forms dann generell nicht dafür geeignet ist, zwischen verschiedenen Seiten umzuschalten, oder? Verwendet man dafür andere Technologien?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.09.10 14:53 
Zitat:
Auf TabPages verzichten?


Nein. Lies noch mal. Ich habe von überfüllten Tabpages gesprochen.
Winforms ist relativ langsam unabhängig ob man ein TabControl einsetzt oder nicht. Aber nicht so langsam das, wenn man sich in der gleichzeitig angezeigten Control menge im sinnvollen Bereich bewegt, Probleme haben sollte.
Mein Vorschlag sollte darauf hinweisen das wenn du mehrere Dutzend gleichzeitig angezeigte Controls hast diese auf mehrere einzelne Formen oder zusätzliche weiter Tabpages sinnvoll verteilst. Denn sobald Winforms überfordert ist ist höchstwahrscheinlich auch der User vor dem Bildschirm überfordert.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4807
Erhaltene Danke: 1061

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Do 16.09.10 18:55 
Hallo Joey86,
bei vielen Controls solltest du dir überlegen, ob du evtl. besser Gruppenelemente (z.B. ListView, DataGridView etc.) benutzt oder aber stattdessen einzelne Elemente selber zeichnest.

Zum Nachlesen empfehle ich mal folgende Beiträge aus dem MyCSharp-Forum:
[Tutorial] Zeichnen in Windows-Programmen (Paint/OnPaint, PictureBox): www.mycsharp.de/wbb2...d.php?threadid=21782
[Artikel] Einführung: Zeichnen Optimieren / Schnelles zeichnen: www.mycsharp.de/wbb2...d.php?threadid=28527

PS. Ich habe auch schon Programme mit TabPages und mehreren anderen Unterelementen (einige davon sogar selber wieder TabPages) erstellt. Große Geschwindigkeitseinbußen beim Umschalten der TabPages habe ich nicht feststellen können. Ich hatte aber das Problem, daß Windows nur eine bestimmte Anzahl an Window-Handles unterstützt und irgendwann kam dann bei mir "Can not create Window Handle" und dann bin ich auf dynamische Controls umgestiegen.

Wie Ralf Jansen schon geschrieben hat, führst du beim Umschalten irgendwelchen eigenen Code aus (oder werden evtl. zuviele Events abgearbeitet)?
Joey86 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Do 16.09.10 20:19 
user profile iconTh69 hat folgendes geschrieben Zum zitierten Posting springen:

Wie Ralf Jansen schon geschrieben hat, führst du beim Umschalten irgendwelchen eigenen Code aus (oder werden evtl. zuviele Events abgearbeitet)?

Eigentlich nicht. Im Grunde wurde der Code komplett vom WinForms Designer in VS erzeugt.

Damit ihr mal nen Eindruck bekommt:
Eines der Tabs hat so knapp zehn Labels, zwei Buttons, eine ComboBox und eine CheckBox. Ich hab, und das ist dann vermutlich der Verursacher meines Problems, für die Tabs BackgroundImages. Ich wusste nur nicht, dass sich das so dermaßen auf die Performance auswirkt. Aber ansonsten seht ihr ja, dass ich nicht allzu viel Elemente auf meiner TabPage hab.

Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Do 16.09.10 21:09 
Die Labels sind transparent so das der Background durchscheint? Da bist du, neben den leidlichen Fähigkeiten von Winforms, auf eine echte Schwäche gestoßen. Simulierte Transparenz ;)
Joey86 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 56



BeitragVerfasst: Fr 17.09.10 11:01 
user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Die Labels sind transparent so das der Background durchscheint? Da bist du, neben den leidlichen Fähigkeiten von Winforms, auf eine echte Schwäche gestoßen. Simulierte Transparenz ;)


Jap, die sind größtenteils transparent.
Naja, dann werd ich das wohl so hinnehmen. :wink:

Danke!