[J# @ VS] gegevens panel verdwijnen na minimaliseren venster

Pagina: 1
Acties:

  • crazyheinz
  • Registratie: Juni 2006
  • Laatst online: 29-09 17:32
Ik heb een programma gemaakt in Visual studio waarbij er grafische elementen op een panel komen, zoals lijnen en bollen.
Nu het probleem is, wanneer ik het execute venster minimaliseer, die grafische elementen weg zijn.
Ik heb gelezen dat je dit kan fixen in de _Paint methode bij je form. Maar hoe je dit precies doet weet ik niet.

Ik zou dus de elementen die op het panel staan, moeten terughebben bij het terug openen van het execute venster.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Wel, zoals je zegt: zorg ervoor dat je een eventhandler maakt voor de 'Paint' event van je Form, en zorg ervoor dat je in die event-handler je lijnen en bollen hertekent.
Hoe je dat doet: da's best basic. Je weet toch ook hoe je een event-handler kunt maken voor de Click event van een Button ? Op dezelfde manier dus, maar dan voor een andere event, van een andere control.

https://fgheysels.github.io/


  • crazyheinz
  • Registratie: Juni 2006
  • Laatst online: 29-09 17:32
Ik heb mijn vraag miss niet goed gesteld.
Ik weet best hoe je zo een event aanmaakt.

Als ik in de _Paint methode mijn methode uit een andere klasse aanroep om de huidige toestand te tekenen, krijg ik een nullpointerexeption, wat ook logisch is aangezien mijn arrays nog niet zijn gevuld.
Dus er wordt in mijn form direct naar de _paint methode gegaan, wat uiteraard niet de bedoeling is.

Het zou dus alleen maar moeten uitgevoerd worden wanneer het scherm werd geminimalisseerd wordt of er met een andere schermpje over wordt gegaan, waardoor de elementen verdwijnen...

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Eh, zorg ervoor dat je die method oproept op een instance van die class ?
Geen idee hoe je applicatie qua structuur in elkaar zit, maar als je een instance-method aanroept, zonder dat je een instance gecreeërd hebt, dan krijg je natuurlijk een null-pointer exception

https://fgheysels.github.io/


  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 17-10 16:43
Als je een eventhandler voor draw maakt loopt je programma vast als je het programma opstart omdat je dan nog niet de arrays heb gevuld.

Echter, als je er van uit mag gaan dat je programma pas geminimalizeerd (en daarna dus ook weer restored/maximalizeerd) wordt als de arrays wel gevuld zijn kun je de methode die je gemaakt hebt om de rondjes te tekenen oproepen vanaf het even "maximize" (weet zo even niet hoe dit ook alweer exact heet, in vb6 was het maximize, en in C# *dus .net* weet ik het niet uit mijn hoofd, en ik ben aardslui)

Wat nog beter zou zijn is natuurlijk een simpele check of je array gevuld is, klik voor de grap eens op de "how to check if = null" error die je krijgt van de debugger, hier staat in geschreven hoe je kan controleren of je arrays gevuld zijn.

of nog een andre mogelijkheid is in de paint methode de call naar de methode tussen een try-catch te zetten. (niet 100% zeker of J# dit kan in .net)

Maar zoals Whoami zegt, dit is vrij basic spul, even googlenen nog maar? ;)

[ Voor 4% gewijzigd door roy-t op 19-05-2007 18:04 ]

~ Mijn prog blog!