Acceder à un controle dans un formulaire enfant.

Fermé
jpvbf Messages postés 3 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 18 avril 2016 - Modifié par baladur13 le 18/04/2016 à 09:28
jpvbf Messages postés 3 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 18 avril 2016 - 18 avril 2016 à 19:35
Bonjour
Je suis nouveau sur le forum et débutant en programmation VB2010. Jusqu'à présent je développais un programme en VB6 mais depuis le passage en Windows 10 je ne peux plus l'utiliser.
Mon problème est le suivant:
J'ai créé un formulaire parent avec un bouton pour ouvrir des formulaires enfant FclsChild2.
Le formulaire enfant comporte un bouton "fermer" et un Label Label1
Pour créer les formulaires enfant j'ai écrit le code :

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
        Dim Num As Integer

        For Num = 1 To 4
                Dim Commande As New FclsChild2()

                Commande.MdiParent = Me
                Commande.Tag = Str(Num)
                Commande.Text = "Panneau " & Num
                Commande.Show()
                Commande.Label1.Text = "Vide"
        Next
end sub


Là j'arrive à écrire du texte dans Label1

Par la suite je veux modifier le texte de Label1 dans un formulaire enfant sélectionné. Pour sélectionner le formulaire enfant j'ai écrit la procédure suivante :
  Sub sel_Commande(Num As Integer)
        Dim Formulaire As Form

        For Each Formulaire In FclsMDIParent.MdiChildren
            If TypeOf Formulaire Is FclsChild2 Then
                Commande = CType(Formulaire, FclsChild2)
                If Commande.Tag = Str(Num) Then

                    Commande.Focus()
                   Commande.label1.text = "2"
                End If
            End If

        Next
    End Sub

et je n'arrive pas à accéder au contrôle label1 pour modifier le test. L'erreur est la suivante :Erreur 1'label1' n'est pas un membre de System.Windows.Forms.Form'.

Je remercie par avance la personne qui pourra me sortir de cette impasse.
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

Whismeril Messages postés 19039 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 mai 2024 932
Modifié par Whismeril le 18/04/2016 à 09:24
Bonjour

pour plus de lisibilité, pour tes prochains posts, merci d'utiliser la coloration syntaxique, voir explications ici.

Vb.Net est un très (très) différent de VB6, voir cet article, j'y fais mention d'un cours que je te conseille de suivre avant de reprendre ton projet.

Ton problème peux avoir 2 raisons:
  • VB.Net est sensible à la casse, donc label1 est différent de Label1
  • Label1 est probablement un membre privé de ta classe (ce qui est une bonne pratique, et donc VS fait ainsi par défaut), tu pourrais le rendre public (ce serait alors une mauvaise pratique) ou alors utiliser les principes d'interaction entre formulaires, voir ce 3eme article.


Quand j'étais petit, la mer Morte n'était que malade.
George Burns
0
jpvbf Messages postés 3 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 18 avril 2016
18 avril 2016 à 16:57
Bonjour et merci de m'avoir répondu mais malheureusement, après avoir passé plus de 2heures à lire les différents articles, je n'arrive pas à faire le rapprochement avec mon besoin qui me parait très simple : modifier par le code la propriété text d'un contrôle Label sur un formulaire enfant à partir du formulaire parent ou par une procédure ou méthode. Je pense que je vais simplement laisser tomber car si je n'arrive pas à comprendre comment faire une action aussi simple je ne pourrai jamais convertir le reste de mon programme vb6 qui est beaucoup plus compliqué puisqu'il me permet de gérer un réseau de train miniature et de faire rouler plusieurs trains simultanément en automatique.

Encore merci pour le temps passé.
0
Whismeril Messages postés 19039 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 7 mai 2024 932
18 avril 2016 à 19:12
Alors oui, il est impossible de convertir un code vb6 en Vb.net. Ce sont deux langages très différents, car la philosophie de base est différente.

Pour ton problème, tu peux écrire une méthode publique dans ton formulaire enfant qui prend un string en paramètres et qui peux modifier le label.
0
jpvbf Messages postés 3 Date d'inscription dimanche 17 avril 2016 Statut Membre Dernière intervention 18 avril 2016
18 avril 2016 à 19:35
Re bonjour
J'ai trouvé. Ce ne doit pas être trop "propre" mais ça marche.

Dans un module "Définition des Variable" je définissais ma variable Commande : Public Commande as form en faisant :Public Commande As FclsChild2 qui est le formulaire avec le contrôle Label1 j'arrive à accéder au Label1.text.
J'arrive même a faire un tableau de formulaire en déclarant : Public Commande(5) As FclsChild2.
Ce n'est certainement pas digne d'un programmeur mais ça me permet d'avancer.


Encore merci
0