2010-01-14 11 views
7

Ich habe ein Resize-Ereignis zu einem meines Widgets hinzugefügt, die wie folgt aussieht:.NET-Größenänderungsereignis: Alte Größe erhalten?

void glControl_Resize(object sender, EventArgs e) { 

Gibt es eine Möglichkeit ich die alte Größe des Widgets (vor Ändern der Größe) bekommen? Vielleicht kann ich e zu etwas, das mir mehr Informationen geben wird? Oder sollte ich es nur während dieser Veranstaltung speichern?

+0

Wenn Sie ein Ereignis ** vor ** Größe ändern möchten, wird tatsächlich von Windows außer Kraft gesetzt 'WndProc' und fangen Sie die richtige Nachricht. Ich bin mir nicht sicher was genau. Aber es ist der einzige Weg, um ein ** vor der Größenänderung ** zu bekommen. – n4pgamer

Antwort

12

Ja, nur das Verfolgen der alten Größe in einem Klassenfeld ist die einfache Lösung. Zum Beispiel:

2

Per Konvention sollten Sie ein Ereignis OnResizing hinzufügen, das nur dann ausgelöst wird, wenn es geändert wird, aber nicht geändert wurde. Anschließend wird die OnResize ausgelöst, nachdem die Größe geändert wurde. Sie würden den alten Wert von Ihrem EventArg im OnResizing Ereignis erhalten.

Edit:

Sind Sie Ihre eigene Veranstaltung oder Brennen einer einer inkludierten Kontrolle zu schaffen?

Wenn Sie Ihre eigene Veranstaltung machen, können Sie von EventArg ableiten und etwas wie ResizeEventArg, die die Größe der Sache, die Sie wollen, zu machen.

Ich würde die ResizeEventArg für die beiden Resize und OnResizing Ereignisse verwenden, und immer noch folgen, was ich schon sagte.

Oder wenn Sie wissen, welche Art von Steuerelement es ist, können Sie die Object sender in den Typ umwandeln und dann lesen Sie die Eigenschaft.

+0

Ich erstelle keine eigene Veranstaltung. Und es hat kein OnResizing-Event? Nichts scheint ein OnResizing-Event zu haben. Ich sehe ein "ResizeBegin" auf meinem Hauptformular, aber dies ist ein 'Tao.Platform.Windows.SimpleOpenGlControl', das auch nicht zu haben scheint. Schätze ich bin snookered. Danke trotzdem. Gut für zukünftige Referenz. – mpen