Passer les données dans une autre form

Résolu
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021 - 1 juil. 2016 à 14:34
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021 - 3 juil. 2016 à 11:39
Bonjour à tous,
voila mon petit souci :
j'essaie de passer la valeur d'une cellule sélectionnée d'un datagridview d'une form dans une autre form et tout cela dans un conteneur mdi " form parent "
Planning = form parent
Gestion_Gamme = form lancé en mode show() " à partir du MenuStrip du form parent
Select_Categorie = form lancé en mode showDialog() à partir de la form Gestion_Gamme

le code sur la form Planning qui lance la form Gestion_Gamme :

Dim Frm As Form

For Each Frm In Me.MdiChildren
If TypeOf Frm Is Gestion_Gamme Then
If Frm.WindowState = FormWindowState.Minimized Then
Frm.WindowState = FormWindowState.Normal
End If
Frm.Activate()
Exit Sub
End If
Next

Dim f As New Gestion_Gamme


f.MdiParent = Me
f.Show()


Le code sur la form Gestion_Gamme qui lance la form Select_Categorie :


Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Select_Categorie.ShowDialog()
End Sub


le code qui est sensé copier la valeur cellule sélectionnée sur la form

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Gestion_Gamme.TextBox4.Text = DataGridView1.CurrentRow.Cells("Nom_categorie").Value.ToString

Me.Close()
End Sub


Logiquement elle copie la valeur sélectionnée dans le textbox de la form Gestion_Gamme .
Cela fonctionne si je teste simplement avec les deux form Gestion_gamme et Select_Categorie sans passer par le form parent

Et cela fonctionne aussi, avec le contener parent si je simplifie le code qui lance la form Gestion_Gamme ( Menustrip du parent )


Gestion_Gamme.MdiParent = Me
Gestion_Gamme.Show()


Et le problème c'est qu'avec ce code je ne peux pas remettre en 1er plan ma form réduite ( rappelée dans le menu )

Si vous avez un solution je suis preneur

Merci par avance

4 réponses

wmade Messages postés 34 Date d'inscription samedi 18 juin 2016 Statut Membre Dernière intervention 20 octobre 2017
1 juil. 2016 à 18:38
Bonjour,

Je suis pas sur mais tu devrais pas utiliser le meme nom que t'a donnée a ta form. (f)

Ici :
            Dim f As New Gestion_Gamme
 
 
            f.MdiParent = Me
            f.Show()


Donc test deux autre seron a mon avis :
1 :
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        f.TextBox4.Text = DataGridView1.CurrentRow.Cells("Nom_categorie").Value.ToString
 
        Me.Close()
    End Sub

2:
f.MdiParent = Me
f.Show()


Merci de me dire si ça t'a aider.
ça pourra me servir
0
Salut wmade et merci pour ton aide
j'ai testé mais cela ne fonctionne pas, il ne me trouve pas f car c'est pas sur le même formulaire.
et j'avoue que je bloque dessus je sais que le problème vient de ce code : ( sur le form parent planning dans le menu ToolStripMenuItem_Click )

Dim Frm As Form

For Each Frm In Me.MdiChildren
If TypeOf Frm Is Gestion_Gamme Then
If Frm.WindowState = FormWindowState.Minimized Then
Frm.WindowState = FormWindowState.Normal
End If
Frm.Activate()
Exit Sub
End If
Next

Dim f As New Gestion_Gamme


f.MdiParent = Me
f.Show()


car si je vire tout ça et je le remplace simplement par ça :

AffichePlanning.MdiParent = Planning
AffichePlanning.Show()


Ben tout fonctionne :/
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
1 juil. 2016 à 19:03
0
Salut Whismeril et merci pour ton lien
j'avoue que j'ai du mal à comprendre, je ne suis pas un pro et loin de la :)
0
Whismeril Messages postés 19025 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 19 avril 2024 656
2 juil. 2016 à 17:31
Le code que tu as montré, c'est "du vb6".
Y a des trucs de vb6 qui marchent dans certains cas, comme tu t'en ai rendu compte.

Mais, pour s'affranchir de tous comportement hasardeux le mieux est de ne pas mélanger les chiffons et les serviettes.

Dans chacune de tes form passe une référence vers l'autre, et gère les dans la Form mère.

Le premier code que tu montres, cherche si une instance existe déjà, si oui la maximise et l'active, et ensuite que tu en ai trouvé ou pas en initialise une nouvelle.
Donc déjà à chaque fois que tu y passes tu ajoutes une instances.

Alors qu'en ayant une référence avec une portée supérieure dans ta form mère, il te suffirait de voir si elle est initialisée ou pas pour soit l'activer soit l'initialiser.

Ensuite tu passes cette référence dans le constructeur de l'autre form enfant et tu peux lui parler directement, y a pas le doute de savoir si il y en a plusieurs, une seule, pas du tout.

Et vice est versa si t'es deux forms doivent parler ensemble.
0
spifspaf Messages postés 25 Date d'inscription samedi 14 juin 2014 Statut Membre Dernière intervention 26 avril 2021
3 juil. 2016 à 11:39
Bon en fait les infos de Whismeril m'ont fait réfléchir :)
il fallait simplement pas ajouter une instance ..
code modifié sur le form parent planning dans le menu ToolStripMenuItem_Clicket ( et tout fonctionne )

Dim Frm As Form

For Each Frm In Me.MdiChildren
If TypeOf Frm Is Gestion_Gamme Then
If Frm.WindowState = FormWindowState.Minimized Then
Frm.WindowState = FormWindowState.Normal
End If
Frm.Activate()
Exit Sub
End If
Next
Gestion_Gamme.MdiParent = Me
Gestion_Gamme.Show()



Merci pour votre aide :)
0
Rejoignez-nous