Tester un handle

Résolu
Neow26 Messages postés 50 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 12 mai 2007 - 4 août 2006 à 11:18
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 4 août 2006 à 17:53
Salut tout le monde,

J'ai un petit problème sur un UserControl que je suis en train de créer. Il marche très bien en interprété mais il me renvoie une erreur du genre "Impossible d'appler Invoke ou BeginInvoke tant que le handle de la fenêtre n'est pas créer".

Dans mon code, dès la fin de InitializeComponents je lance un thread qui lui commence par appeller un délégué (affichage d'un label) par un this.Invoke(). Je pense qu'à ce moment là le handle n'a pas pu être enore créer et que j'ai cette erreur pour ça.

Pour résoudre mon problème j'ai ajouté en 1er ligne de mon constructeur un this.CreateHandle. Ca marche en interprété et compilé mais je trouve ça pas très recommandable.

Je voudrais savoir si quelqu'un sait comment tester l'existence d'un handle et de le créer si besoin.

Merci

4 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 août 2006 à 12:00
Salut,
Tu peux tester l'existence du Handle avec la Property IsHandleCreated de ton Control.

<hr size="2" />VC# forever
3
Neow26 Messages postés 50 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 12 mai 2007
4 août 2006 à 12:07
Oui merci, je viens à l'intsant de trouver en cherchant une propriété sur un autre objet.
Ca me donne la chose suivante


if (!this.IsHandleCreated)
   this.CreateHandle();
3
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
4 août 2006 à 12:03
Salut

Tu peux t'inscrire a l'evenement HandleCreated, et appeler ton Invoke() dans la méthode associée

Mx
MVP C# 
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
4 août 2006 à 17:53
Salut, tu peux rajouter un this.Show( ) juste après InitializeComponents, ça va créer les handles des contrôles contenus dans la forme. Sinon Je pense que utiliser l'évènement HandleCreated comme le dit Mx c'est mieux que IsHandleCreated + CreateHandle.
0
Rejoignez-nous