flackern bei Mdi-Childs

masmin

Mitglied
Hallo,

ich habe ein kleines Schönheitsproblem mit dem Mdi und den Mdi-Childs. Ich habe in meinem Mdi-Container eine Navigationsbar mit diversen klickbaren Items. Wenn ich nun auf einen Item (z.B. "öffne Form1") klicke öffnet sich im Container ein Windows.Form als MdiChild (z.B. das Form1). Sobald ich auf einen anderen Item in der Navigationsbar klicke (z.B. "öffne Form2")wird dieses MdiChild (hier Form1) geschlossen und anschließend das dem Item zugeordnete Windows.Form als MdiChild geöffnet (z.B. Form2).
Nun tritt zwischen dem Schließen des ersten Childs und dem Öffnen des zweiten Childs immer so ein Flackern auf.
Wie krieg ich nun einen "sauberen" Übergang hin, ohne das man dieses unschöne Flackern sieht?

Hier mal der Code, welcher ausgeführt wird, sobald ich auf einen Item klicke
Code:
Form Child1 = this.ActiveMdiChild;
Child1.Close();
 
Child2 ch2Form = new Child2();
ch2Form.MdiParent=this;
ch2Form.Show();

Hoffe ihr versteht was ich meine und habt ein paar Ideen.

Danke und Grüße
masmin
 
Wo genau tritt den das Flackern auf ? Liegt ggf. daran das die Menüs gemergt werden.

Vielleicht probierst du ma l den Code wie folgt um zu stellen.
Code:
Form Child1 = this.ActiveMdiChild;
Child2 ch2Form = new Child2();
Child1.Close();
ch2Form.MdiParent=this;
ch2Form.Show();

Möglichweise dauert die Instanzierung des neuen Fensters zu lange.
 
Ändert leider auch nichts :(

Ich hab schon überlegt, ob ich es nicht vielleicht so versuche, dass ich zuerst alle Forms instanziere und dann mit dem jeweiligen Klick die Forms nur auf Show() oder Hide() stell. Aber auch hierbei keine Änderung. Das Flackern bleibt.
 
Und wo flackert es nun genau?
Vielleicht gibts ein Problem mit der Maximieren des neuen Fensters.
Flackern deine Formulare auch, wenn du sie manuell vergrösserst verkleinerst ?
 
Also es "flackert" wenn ein ChildForm geschlossen wird und das andere geöffnet wird. Dies geschieht ja quasi nacheinander. Vermutlich gibt es dort irgendwie beim Malen Probleme.

Ich habe nun den Hinweis bekommen es mal mit
Code:
this.SuspendLayout();
...
this.ResumeLayout();
zu probieren.

Ich werde das heute abend mal ausprobieren. Falls du noch eine andere Idee hast laß es mich ruhig wissen :)
 
Zurück