[.NET2.0]Form fullscreen tonen

Pagina: 1
Acties:

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
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:

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

  • Zr40
  • Registratie: Juli 2000
  • Niet online

Zr40

Moderator General Chat

heeft native IPv6

Is dit geen optie?
C#:
1
2
3
this.WindowState = FormWindowState.Normal;
this.FormBorderStyle = FormBorderStyle.None;
this.WindowState = FormWindowState.Maximized;

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Topicstarter
Dat heb ik idd geprobeerd en het werkt ook, maar dit is geen mooie oplossing naar mijn mening. Je ziet nu namelijk eerst het Form naar een normal state resizen en dan wordt ie gemaximized. Wat wel een optie zou kunnen zijn is het uitschakelen van het painten van het scherm wanneer deze geresized wordt. Maar sinds dit door windows wordt afgehandeld vraag ik me af of je hier wel invloed op kunt hebben.

  • EfBe
  • Registratie: Januari 2000
  • Niet online
en de oude size onthouden voordat je gaat maximizen?

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com