2010-10-01 8 views
33

Ich lese über SuspendLayout() und ResumeLayout(). Was ich nicht herausfinden kann ist, warum sollte ich das tun/benutzen. Ich weiß, dass Sie es verwenden, wenn Sie Steuerelemente zur Laufzeit einem Steuerelement-Container hinzufügen.C# Warum SuspendLayout() verwenden?

Es hat etwas mit der Einstellung Eigenschaften wie Dock zu tun, Anchor, Location usw.

Aber ich verstehe nicht, was der zusätzliche Wert von Suspend- und ResumeLayout(). Wofür sorgen diese Methoden?

Antwort

50

Grundsätzlich ist es, wenn Sie mehrere layoutbezogene Eigenschaften anpassen oder mehrere untergeordnete Elemente hinzufügen möchten, aber vermeiden, dass das Layoutsystem wiederholt auf Ihre Änderungen reagiert. Sie wollen es nur führen Sie das Layout am Ende, wenn alles "fertig" ist.

+2

Ich verstehe immer noch nicht, was 'SuspendLayout()' tut. Ich meine, warum verwenden Sie SuspendLayout() 'Sie können diese Eigenschaften auch festlegen, ohne' SuspendLayout() 'zu verwenden. – Martijn

+7

@Martijn: Ja, Sie können sie einstellen ... und das Layout-System wird Zeit verschwenden (und möglicherweise den Bildschirm hässlich aussehen lassen) das Layout ändern, während Sie die verschiedenen Eigenschaften einstellen - anstatt es * einmal * wenn Sie tun hab alles fertig gemacht. Angenommen, Sie haben ein kompliziertes Layout, das versucht, den Platz gleichmäßig zu verteilen, und Sie fügen 100 Elemente hinzu ... wollen Sie wirklich, dass der Speicherplatz nach dem Hinzufügen des ersten und nach dem Hinzufügen berechnet wird? die zweite hinzugefügt, dann nachdem du die dritte usw. hinzugefügt hast? –

+0

Wie Jon Skeet schrieb: Wenn Sie Multipliziereigenschaften festlegen (oder mehrere Zeilen in einer Rasteransicht einfügen), wird der Bildschirm nicht für jede einzelne Änderung aktualisiert, sondern nur, wenn ResumeLayout aufgerufen wird. Spart die Leistung und das seltsame Bildschirmflimmern. –

Verwandte Themen