Passer les données dans une autre form [Résolu]

spifspaf 11 Messages postés samedi 14 juin 2014Date d'inscription 30 juillet 2016 Dernière intervention - 1 juil. 2016 à 14:34 - Dernière réponse : spifspaf 11 Messages postés samedi 14 juin 2014Date d'inscription 30 juillet 2016 Dernière intervention
- 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
Afficher la suite 

6 réponses

Répondre au sujet
wmade 34 Messages postés samedi 18 juin 2016Date d'inscription 20 octobre 2017 Dernière intervention - 1 juil. 2016 à 18:38
0
Utile
1
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
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 :/
Commenter la réponse de wmade
Whismeril 10526 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 1 juil. 2016 à 19:03
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 :)
Commenter la réponse de Whismeril
Whismeril 10526 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 2 juil. 2016 à 17:31
0
Utile
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.
Commenter la réponse de Whismeril
spifspaf 11 Messages postés samedi 14 juin 2014Date d'inscription 30 juillet 2016 Dernière intervention - 3 juil. 2016 à 11:39
0
Utile
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 :)
Commenter la réponse de spifspaf

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.