spifspaf
Messages postés25Date d'inscriptionsamedi 14 juin 2014StatutMembreDernière intervention26 avril 2021
-
1 juil. 2016 à 14:34
spifspaf
Messages postés25Date d'inscriptionsamedi 14 juin 2014StatutMembreDernière intervention26 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
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 )
wmade
Messages postés34Date d'inscriptionsamedi 18 juin 2016StatutMembreDernière intervention20 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
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 :
Whismeril
Messages postés18991Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention27 mars 2024654 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.
spifspaf
Messages postés25Date d'inscriptionsamedi 14 juin 2014StatutMembreDernière intervention26 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()
Modifié par spifspaf le 2/07/2016 à 12:20
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 )
car si je vire tout ça et je le remplace simplement par ça :
Ben tout fonctionne :/