johann36
Messages postés130Date d'inscriptiondimanche 15 février 2004StatutMembreDernière intervention 9 mai 2017
-
1 sept. 2008 à 17:06
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
2 sept. 2008 à 11:58
Bonjour,
Je crois que je détiens la question la plus bête qu'il soit mais bon il y a un début à tout.
Je souhaiterai savoir comment connaitre l'état d'ouverture d'un formulaire ou fenêtre ?
J'ai un formulaire mère lorsque je clique sur un bouton j'affiche un 2ème formulaire mais qui lui ce coule au bas du formulaire mère.
Ce que je veux donc faire c'est que lorsque je déplace mon formulaire mère le 2ème formulaire se déplace lui aussi avec les même positons c'est à dire collé en bas du formulaire mère.
Bon je crois que j'ai donné mal à la tête à tout le monde et j'espère du moins que vous avez pu comprendre mon problème.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 1 sept. 2008 à 18:00
salut,
si si c'est clair, tu veux déplacer le 2e formulaire depuis le premier, mais sans test çà obligerait le chargement...
en VB6 il suffit de boucler sur la collection Forms. si elle est dedans, c'est qu'elle est chargée
je suppose que tu dois avoir un équivalent en dotnet
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 2 sept. 2008 à 10:52
Salut,
"tester ".visible" chargerait la form si elle ne l'est pas déjà, non?"
Il suffit qu'un contrôle soit créé, et non chargé, pour pouvoir accéder à ses propriétés. Je rappel en passant que la méthode Load d'un contrôle est appelé lorsque il est affiché pour la 1ère fois (Visible devient True)
Mais il se peut que le formulaire ne soit même pas créé, dans ce cas l'accès à Control.Visible va générer une erreur, il faut donc tester si l'objet à été créé avant de tester s'il est visible.
De plus, un contrôle déchargé n'est pas Nothing, mais est tout de même inutilisable. Il faut donc tester si le Handle du contrôle est encore valide. Pour cela, je crois qu'on peut utiliser la propriété IsHandleCreated du contrôle. Le test devient donc:
If MyForm IsNot Nothing AndAlso MyForm.IsHandleCreated AndAlso MyForm.Visible Then
' MyForm est affiché
End If
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 2 sept. 2008 à 11:35
J'ai dis:
"Mais il se peut que le formulaire ne soit même pas créé, dans ce cas
l'accès à Control.Visible va générer une erreur, il faut donc tester si
l'objet à été créé avant de tester s'il est visible."
Private form2 As Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If form2.Visible Then (La référence d'objet n'est pas définie à une instance d'un objet.)
MsgBox("Ne vient pas")
End If
End Sub
Et ceci:
"De plus, un contrôle déchargé n'est pas Nothing, mais est tout de même
inutilisable. Il faut donc tester si le Handle du contrôle est encore
valide."
Private form2 As New Form2
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
form2.Close()
If Not form2.Visible Then
form2.Show() (Impossible d'accéder à un objet supprimé.)
End If
End Sub
Dans les 2 cas, mon code passe sans problème (cela m'a permis de tester l'exactitude de mes propos au sujet de IsHandleCreated)
gillardg
Messages postés3275Date d'inscriptionjeudi 3 avril 2008StatutMembreDernière intervention14 septembre 20142 2 sept. 2008 à 11:51
Private form2 As Form2
'si c'est pas déclaré New ça plante
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If form2.Visible Then (La référence d'objet n'est pas définie à une instance d'un objet.)
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 2 sept. 2008 à 11:58
Oui, c'est ce que je dis
Si le contrôle n'est pas créé, l'accès à sa propriété Visible génère une erreur.
Pourquoi créer le formulaire si il n'est pas affiché? Ce n'est pas toujours le cas, mais souvent on créé le formulaire lorsque il doit être affiché et on le détruit lorsque il n'est plus, pour ne pas inutilement utiliser des ressources....