Forums Neueste Beiträge
 

OnResize Bereich

29/12/2007 - 13:43 von Paul Sendband | Report spam
Hallo,

ich habe eine Frage bezüglich der OnResize Methode eines Controls. Ich
habe ein eigenes Control, welches von der Control-Klasse abgeleitet ist.
Wenn sich nun die Größe meines Controls àndert, soll es natürlich neu
gezeichnet werden. Dafür verwende ich this.Invalidate() innerhalb der
OnResize Methode.

Das Problem dabei ist nun, dass dadurch natürlich das gesamte Control
neu gezeichnet wird. Viel lieber hàtte ich es aber, wenn ich der
Invalidate-Methode den Bereich angeben könnte, um den sich das Control
veràndert hat (z.B. größer geworden ist).

Meine Frage ist nun: Wie kann ich bei einem Resize nun herausfinden,
welcher Bereich sich veràndert hat?

Vielen Dank im Voraus!
 

Lesen sie die antworten

#1 Frank Dzaebel
29/12/2007 - 21:46 | Warnen spam
Hallo Paul,

Das Problem dabei ist nun, dass dadurch natürlich das gesamte Control neu
gezeichnet wird. Viel lieber hàtte ich es aber, wenn ich der
Invalidate-Methode den Bereich angeben könnte, um den sich das Control
veràndert hat (z.B. größer geworden ist).
Meine Frage ist nun: Wie kann ich bei einem Resize nun herausfinden,
welcher Bereich sich veràndert hat?



Du könntest z.B. das ClientSizeChanged-
Ereignis mit der ClientSize-Eigenschaft benutzen, wenn
denn die visuelle Erweiterung Deines Controls so ist,
dass der "Stamm" auch gleich bleibt.
Den Unterschied zwischen der alten und der
neuen ClientSize wàre dann der geànderte Bereich.
Ansonsten müsste ja eh komplett neu gezeichnet
werden. Du kannst dann folgende Methode benutzen:

[Control.Invalidate-Methode (Region) (System.Windows.Forms)]
http://msdn2.microsoft.com/de-de/li...ka3b5.aspx


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen