2016-09-23 4 views
1

In meiner Anwendung wird ResizeEnd Ereignis ausgelöst, wenn die Größe des Formulars durch Ziehen der Ecken geändert wird. aber es wird nicht ausgelöst, wenn Sie auf die Schaltfläche zum Maximieren klicken. Mit Resize Event habe ich dieses Szenario erreicht, aber ich habe einige Probleme bei diesem Event. Also muss ich ResizeEnd Ereignis verwenden, bitte jemand schlägt mir vor, warum dieses Ereignis nicht ausgelöst wird, während die Größe des Formulars maximiert, indem Sie maximieren? oder schlagen Sie mir Alternativen vor.ResizeEnd-Ereignis wird nicht ausgelöst, wenn die Größe des Formulars durch Maximieren-Schaltfläche geändert wird?

Vielen Dank im Voraus.

Antwort

3

Das Ereignis ResizeEnd wird ausgelöst, wenn der Benutzer die Größenänderung eines Formulars beendet, indem er normalerweise einen der Rahmen oder den Größenanpassungsgriff in der unteren rechten Ecke des Formulars zieht und dann freigibt. Es wird auch ausgelöst, wenn der Benutzer ein Formular verschiebt.

Wenn aus irgendeinem Grund müssen Sie das Fenster Ursache Maximierung der ResizeEnd Ereignis auslöst Sie das Ereignis auf diese Weise erhöhen können:

const int WM_SYSCOMMAND = 0x0112; 
const int SC_MAXIMIZE = 0xF030; 
protected override void WndProc(ref Message m) 
{ 
    base.WndProc(ref m); 
    if (m.Msg == WM_SYSCOMMAND) 
    { 
     if (m.WParam == (IntPtr)SC_MAXIMIZE) 
     { 
      //the window has been maximized 
      this.OnResizeEnd(EventArgs.Empty); 
     } 
    } 
} 

Hinweis

  • Das Resize Ereignis auch ausgelöst, wenn das Formular maximiert.
  • Das Ereignis Layout ist ein geeignetes Ereignis, wenn Sie mit einem benutzerdefinierten Layout arbeiten möchten.
+0

Hallo Reza, Danke für Ihre Antwort. In meiner Quelle habe ich Form als Eigenschaft verwendet. So kann ich nicht OnResizeEnd Methode durch das Formular aufrufen. – Prithiv

+0

Hallo, Gern geschehen :) Wenn dieses Formular eines Ihrer Formulare ist, können Sie einfach solchen Code in einer gemeinsamen Basisform aller Formulare Ihrer Anwendung hinzufügen. Aber wenn es nicht Ihr Formular ist und Sie nicht Zugriff auf seine nicht öffentlichen Mitglieder haben, um 'WndProc' zu überschreiben und' OnResizeEnd' aufzurufen, können Sie auch eine ähnliche Lösung für ein anderes 'Form' anwenden, auf das Sie keinen Zugriff haben es sind nichtöffentliche Methoden. –

+1

Danke dafür. Sehr hilfreich. Ich habe auch hinzugefügt, so dass das Ereignis bei der Wiederherstellung zu 'const int SC_RESTORE = 0xF120' ausgelöst wird, wenn sich jemand fragt. –

Verwandte Themen