UserControl perd son Parent

Résolu
Signaler
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
-
Salut à tou(tes)

Je suis confronté à un problème : Le UserControl (UC) que j'ai installé sur ma frmMain perd son Parent !
Inimaginable, non ?

Voilà le contexte :
Mon projet démarre avec un Sub Main
Dans la Sub Main, je charge la forme principale de mon projet (frmMain)
Sur cette forme, mon UC (le SysTrayBalloonque j'ai posté récemment)
Dans cette configuration, pas de souci, cela fonctionne.
Ensuite, depuis ma frmMain_Load, je charge une autre forme de SplashScreen, c'est à dire une forme qui se déchargera seule après une petite tempo.
Tant que la frmSplash est affichée, le UC de frmMain fonctionne. Dans son fonctionnement, il envoie des ordres à sa forme hôte, frmMain avec la commande :
SetForegroundWindow(UserControl.Parent.hWnd)

Dès que la frmSplash est "Unloadée", le UC perd son Parent, devient orphelin, le pauvre, le UserControl.Parent.hWnd renvoie alors 0.

Le frmMain reçoit toujours les RaiseEvent envoyés par le UC.
Lors la réception de cet event, le frmMain est sensé faire apparaitre un menu contextuel avec la commande Popup. Cette commande ne fonctionne plus alors que le programme passe bien dessus. Je pense que cela se résoudra lorsque j'aurai compris pourquoi le lien de parenté disparait.

J'y perds mon latin ...
Comment un UC peut-il perdre son Parent ?
Bizarre, non ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)

1 réponse

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
81
Bon, ça y est, j'ai compris ce qui se passe.
Une erreur humaine, bien sûr :
Dans la Sub Main, je charge ma frmMain en vbModal
Dans le Form_Load de ma frmMain, je charge frmSplash en mode vbModeless.
Or, on ne peut pas charger une forme non modale depuis une forme modale.
L'erreur apparait quand on tente cette manip APRES le Form_Load, mais ne déclenche pas d'erreur durant cette séquance.

Donc, il m'a suffit de charger ma frmMain en non modal pour corriger le tir.
Vous pouvez reprendre un apéro, c'est moi qui vous l'offre.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)