2009-03-13 13 views
1

Ich habe eine einfache Form wie die folgenden:Warum wird mein Windows Form nicht neu gezeichnet, wenn die Größe des Fensters geändert wird?

using System; 
using System.Drawing; 
using System.Windows.Forms; 

namespace PaintTest 
{ 
    class PaintTest : Form 
    { 
     int _counter = 0; 

     [STAThread] 
     static void Main() 
     { 
     Application.Run(new PaintTest()); 
     } 

     protected override void OnPaint(PaintEventArgs e) 
     { 
     e.Graphics.DrawString(_counter.ToString(), new Font(FontFamily.GenericSerif, 10.0f), Brushes.Blue, 10.0f, 10.0f); 
     _counter++; 
     } 
    } 
} 

Wenn die Fenstergröße verändert wird, wird der Zähler nicht auf dem Bildschirm zu aktualisieren angezeigt wird, obwohl OnPaint() und der Zähler erhöht genannt zu werden. Wie kann ich das Formular neu zeichnen, wenn die Größe des Fensters geändert wird?

Antwort

2

Fügen Sie Ihrer Klasse Folgendes hinzu, z. in seinem Konstruktor:

SetStyle(ControlStyles.ResizeRedraw, true);

+0

Wenn das Formular, um eine InitializeComponent() -Aufruf hat, würden Sie diesen Stil vor oder nach der Einstellung? oder ist es nicht wichtig? – Svish

+0

das war übrigens eine schnelle Antwort auf deine eigene Frage ... – Svish

+0

Svish, ich habe es gerade getestet und es ist egal. Re: die schnelle Antwort - Ich hatte es gerade nach einem frustrierenden Morgen ausgearbeitet und wollte die Liebe teilen! :-) –

Verwandte Themen