Ik ben dus een beetje aan het experimenter geweest om een Form fullscreen weer te geven. Onder fullscreen versta ik een form zonder border of titelbalk die het gehele scherm beslaat inclusief de ruimte die een eventueele startbalk etc. inneemt. Nu is dit heel eenvoudig met de volgende code:
En het terug draaien is net zo makkelijk. Gewoon even de vorige WindowState, BorderStyle bewaren en terug zetten wanneer het moet. Deze oplossing heeft alleen 1 probleem. Dit werkt namelijk niet als het Form al De FormWindowState.Maximized heeft. De border wordt er wel vanaf gesloopt, maar daarna wordt het Form niet geresized. Ten eerste heeft een Form de rare eigenschap dat wanneer deze de Maximized state heeft de x en y coordinaten respectievelijk -4 en -4 zijn, zodat als je de border eraf sloopt het form een beetje van het scherm valt en ten tweede overlapt het Form de startbalk NIET.
Nu heb ik vanalles geprobeerd, maar met een pure managed code kom ik er niet uit
Door de hierboven genoemde functie kan ik wel naar eigen zin het form resizen, maar zo moet ik naar mijn zin te veel zelf gaan bijhouden (Bounds, RestoreBounds, MaximizedBounds, blablabla).
Het makkelijkst zou dus zijn dat er een mogelijkheid is om het Form te dwingen om de code uit te laten voeren zoals dat gedaan wordt wanneer de FromWindowState veranderd. Ik heb hier geen mogelijkheid voor gevonden. Heeft iemand hier ervaring mee en mij kan vertellen hoe ik dit met pure managed c# code kan regelen? Zo niet zijn er dan andere suggesties om dit voor elkaar te krijgen?
Thnx
C#:
1
2
| this.FormBorderStyle = FormBorderStyle.None; this.WindowState = FormWindowState.Maximized; |
En het terug draaien is net zo makkelijk. Gewoon even de vorige WindowState, BorderStyle bewaren en terug zetten wanneer het moet. Deze oplossing heeft alleen 1 probleem. Dit werkt namelijk niet als het Form al De FormWindowState.Maximized heeft. De border wordt er wel vanaf gesloopt, maar daarna wordt het Form niet geresized. Ten eerste heeft een Form de rare eigenschap dat wanneer deze de Maximized state heeft de x en y coordinaten respectievelijk -4 en -4 zijn, zodat als je de border eraf sloopt het form een beetje van het scherm valt en ten tweede overlapt het Form de startbalk NIET.
Nu heb ik vanalles geprobeerd, maar met een pure managed code kom ik er niet uit
C#:
1
2
3
4
5
| //dit heeft geen zin this.MaximizedBounds = Screen.FromControl(this).Bounds; //dit heeft ook geen zin als de Form Maximized is this.Bounds = Screen.FromControl(this).Bounds; |
C#:
1
2
| [System.Runtime.InteropServices.DllImport("User32.dll")] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, Int32 x, Int32 y, Int32 cx, Int32 cy, UInt32 flags); |
Door de hierboven genoemde functie kan ik wel naar eigen zin het form resizen, maar zo moet ik naar mijn zin te veel zelf gaan bijhouden (Bounds, RestoreBounds, MaximizedBounds, blablabla).
Het makkelijkst zou dus zijn dat er een mogelijkheid is om het Form te dwingen om de code uit te laten voeren zoals dat gedaan wordt wanneer de FromWindowState veranderd. Ik heb hier geen mogelijkheid voor gevonden. Heeft iemand hier ervaring mee en mij kan vertellen hoe ik dit met pure managed c# code kan regelen? Zo niet zijn er dan andere suggesties om dit voor elkaar te krijgen?
Thnx