Eigene Form bei Maximized die Größe nicht auf Vollbild haben

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Eigene Form bei Maximized die Größe nicht auf Vollbild haben

    Tach Com,

    ich habe eine Form auf WindowsStyle.None und wenn ich diese Maximiere wird der komplette Bildschirm von meiner Form belegt.
    Wie kriege ich das hin, dass beim Maximieren aber die Taskleiste eingeblendet bleibt ?

    mein bis jetzt erster und einziger Versuch war Size auf Screen.PrimaryScreen.WorkingArea.Size zu setzen ... doch die Größe macht sich erst beim normalisieren bemerkbar.

    MfG M4n94fr34k
    probiere die Taskleiste in vordergrund zu setzen !
    Coda aus dem kopf geschrieben (keine C&P):

    VB.NET-Quellcode

    1. 'API Deklaration:
    2. 'FindWindow
    3. 'GetForeGrdoundWindow
    4. Private iResult As Intger
    5. iResult = FindWindow ("Shell_TrayWnd", vbNullString)
    6. GetForenGroundWindow (iResult)


    sollte nicht klappen probiere mit SetFocus !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Alex2000“ ()

    Was verstehst Du unter "normalisieren", kenne ich eigentlich nur aus der Mathematik oder von Datenbanken ?

    Wenn Du wie Du schreibst Me.Size=Screen.PrimaryScreen.WorkingArea.Size:Me.Top=0:Me.Left=0 für das maximieren nimmst, so lässt er doch die Taskleiste frei ?
    ich werds versuchen aber dadurch wird die Form ja trotzdem von der Größe nicht verändert ... aber wenn jetzt Controls hinter der Taskleiste sind ist das ja auch nicht im Sinne des Erfinders

    ich hab das "normalisieren" genannt weil in der Enum die Werte Maximized, Normal und Minimized sind
    damit sollte er zwar das ganze freilassen ... dann darf ich aber viel umbauen, weil ich viel auf den WindowsState aufbaue

    naja ... ich werde dann mal Kangaroos Vorschlag nehmen, da er eher meinen Anforderungen entspricht ... ich meld mich wenn was neues ist
    also ich habs jetzt so geschafft :

    VB.NET-Quellcode

    1. Private kl As Rectangle = New Rectangle(Location, Size)
    2. Private cur As Windows.Forms.FormWindowState = FormWindowState.Normal
    3. Public Overloads Property WindowState() As System.Windows.Forms.FormWindowState
    4. Get
    5. Return cur
    6. End Get
    7. Set(ByVal value As System.Windows.Forms.FormWindowState)
    8. Dim k As Windows.Forms.FormWindowState = value
    9. If value = FormWindowState.Maximized And MyBase.WindowState = FormWindowState.Normal Or MyBase.WindowState = FormWindowState.Minimized Then
    10. k = FormWindowState.Normal
    11. kl = New Rectangle(Location, Size)
    12. Location = Point.Empty
    13. Size = Screen.PrimaryScreen.WorkingArea.Size
    14. ElseIf value = FormWindowState.Normal And MyBase.WindowState = FormWindowState.Maximized Or MyBase.WindowState = FormWindowState.Minimized Then
    15. Size = kl.Size
    16. Location = kl.Location
    17. End If
    18. cur = value
    19. MyBase.WindowState = k
    20. End Set
    21. End Property

    somit kann ich mich immer noch an WindowState orientieren ohne den Code verändern zu müssen aber die Auswirkung wird verändert

    hätt ich sicher auch selbst drauf kommen können aber dank Kangaroos Idee das ganze einfach per Hand zu machen war der ausschlaggebende Punkt :D

    dein Vorhaben Alex2000 hab ich noch nich ganz verstanden ... ich meine es soll sich verhalten wie jede andere Form auch und ich will nicht dem User seine Einstellungen verändern

    aber danke an alle die sich das angeguckt haben und was geschrieben haben :D

    MfG M4n94fr34k


    Edit:
    man kann auch ganz einfach sagen
    MaximumSize = Screen.PrimaryScreen.WorkingArea.Size
    :D

    so einfach kann es gehn

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Mangafreak1995“ () aus folgendem Grund: bessere Lösung gefunden