none
Event, welches nach nach vollständigem WindowStateChanged aufgerufen wird RRS feed

  • Frage

  • Guten Abend MSDNer,

    ich habe nun seit einigen Monaten ein Problem in meinem Projekt und zwar verwende ich hierfür ein Fenster, welches komplett rahmenlos arbeitet, aber dennoch die Schattierungen von Aero beibehält ( hier das Original : http://www.codeproject.com/Articles/138661/Metro-UI-Zune-like-Interface-form ). Problem ist aber, dass wenn ich das Fenster minimiere und dann Wiederherstelle vergrößert sich dieses um 6x28 Pixel. Hierfür habe ich jetzt eine Lösung gefunden und zwar lege ich dazu einfach die MaximumSize vor dem Minimieren fest, doch jetzt ist das Problem, wie setze ich diese auf Nothing, nachdem das Fenster vollständig wiederhergestellt wurde ( es also ruhend auf dem Desktop wieder angekommen ist ) ?

    Standardevents zu überschreiben wie OnResize, OnSizeChanged, OnLayout und Co. haben leider nicht weiter geholfen. Wer hat da eine Idee, wie man dies bewältigen könnte ?

    Ich danke schon einmal für die Antworten und die Mühe ...

    Dienstag, 19. Juni 2012 20:33

Antworten

  • ENDLICH !!! DAs Problem wurde behoben durch eine relativ simple Idee :

            Private Sub MyBase_Paint(ByVal sender As System.Object, ByVal e As PaintEventArgs) _
            Handles Me.Paint
    
                If Me.Controls.IndexOf(CType(sender, Control)) = Me.Controls.Count - 1 And Me.WindowState = FormWindowState.Normal Then
                    If Not Me.MaximumSize = Nothing Then
                        Me.ClientSize = New Size(Me.MaximumSize.Width, Me.MaximumSize.Height)
    
                        Me.MaximumSize = Nothing
                    End If
                End If
            End Sub

    Dazu habe ich einfach alle Controls des Steuerelements, sowie derer Unterelemente einer Prüfung unterzogen, welches das letzte in der Auflistung ist und danach wird dann die ClientSize endgültig festgelegt und die MaximumSize geleert ...

    Gott sei Dank ...

    • Als Antwort markiert Aeneon Donnerstag, 21. Juni 2012 11:41
    Donnerstag, 21. Juni 2012 11:40

Alle Antworten

  • Hallo,

    hab mal den Link aufgerufen. Der Code ist ein bisschen umfangreich. Da steht was von Metro...

    Kannst du die Frage auf eine kleine Windows Forms Anwendung abbilden? Diese hier reinstellen. So dass man es nachvollziehen und nach einer Lösung schauen kann.

    Mittwoch, 20. Juni 2012 11:42
  • Genau das ist eben das Problem : Mein zusätzlich zur Vorlage modifiziertes Fenster ist knappe 2000 Zeilen stark, da kann man schon sagen, dass das Original aus dem Link umfangreich ist. Aber ich brauche eigentlich nur ein Event, welches ganz zum Schluss ausgelöst wird, wenn das Fenster wieder auf dem Desktop erscheint - der Code diente nur als Beispiel und sollte das Problem erläutern ...
    Donnerstag, 21. Juni 2012 09:15
  • ENDLICH !!! DAs Problem wurde behoben durch eine relativ simple Idee :

            Private Sub MyBase_Paint(ByVal sender As System.Object, ByVal e As PaintEventArgs) _
            Handles Me.Paint
    
                If Me.Controls.IndexOf(CType(sender, Control)) = Me.Controls.Count - 1 And Me.WindowState = FormWindowState.Normal Then
                    If Not Me.MaximumSize = Nothing Then
                        Me.ClientSize = New Size(Me.MaximumSize.Width, Me.MaximumSize.Height)
    
                        Me.MaximumSize = Nothing
                    End If
                End If
            End Sub

    Dazu habe ich einfach alle Controls des Steuerelements, sowie derer Unterelemente einer Prüfung unterzogen, welches das letzte in der Auflistung ist und danach wird dann die ClientSize endgültig festgelegt und die MaximumSize geleert ...

    Gott sei Dank ...

    • Als Antwort markiert Aeneon Donnerstag, 21. Juni 2012 11:41
    Donnerstag, 21. Juni 2012 11:40
  •  
    "Aeneon" schrieb im Newsbeitrag
     
    > Standardevents zu überschreiben wie OnResize, OnSizeChanged, OnLayout und
    > Co. haben leider nicht weiter geholfen. Wer hat da eine Idee, wie
    > man dies bewältigen könnte ?
     
    Es gibt schon System-Events, die über Änderungen der Grafik informieren -
    ich würde erstmal nach Änderungen der Bildschirmauflösung googeln, daran
    erinnere ich mich und daran hängen auch die anderen Informationen welche
    Änderungen bei der Grafik entsprechen
     
     
    Freitag, 22. Juni 2012 07:51