Modifier textbox d'une window form à partir d'une autre window form [Résolu]

chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 26 oct. 2011 à 18:17 - Dernière réponse : chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention
- 30 oct. 2011 à 12:30
Bonjour,

Je me lance, et m'inscrit sur ce forum après avoir cherché ma solution en vain...

Avec VB Express 2010, j'ai créé :

1- La window form principal de mon application (appelé HOME).

2-La window form enfant de Home : (appelé NewDoc)

J'ai donc une interface Home, qui me permet de lancer l'interface "NewDoc", ainsi que d'autre fonction. Une fois l'interface NewDoc lancé, elle se superpose à l'interface Home.

Ensuite, j'ouvre une boite de dialogue à partir du Menu de Home pour y rentrer des infos.
J'aimerai qu'une fois cette boite de dialogue validée, les TextBOx de "NewDoc" s'actualise.

Cette boite de dialogue n'est parent ni enfant de personne.



Public Class DialogBox

    Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click

        NewDoc.TextBox1.Text = Me.TexBox1.text
        NewDoc.TextBox2.Text = Me.TexBox2.text

        Me.Close()
    End Sub



Comment faire pour contrôler la TextBox de mon formulaire "NewDoc" à partir du formulaire "DialogBox" ?


Autre question au passage, existe-t-il un moyen de détecter que le formulaire est déjà ouvert, et ainsi de ne pas le rouvrir lorsqu'on clique sur l'évenement pour l'ouvrir?
Actuellement je fais ceci :
   
Public Class Home

 Private Sub NewCalibrationToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewCalibrationToolStripMenuItem1.Click
        Dim NewDoc As New NewDoc

        NewDoc.MdiParent = Me

        NewDoc.Show()

    End Sub
End Class


Merci beaucoup à ceux et celles qui sauront me faire avancer dans mes petits problèmes... ;)
Afficher la suite 

9 réponses

Répondre au sujet
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscription 21 avril 2018 Dernière intervention - 26 oct. 2011 à 20:31
+3
Utile
Bonjour,

Public Shared MaForm as Form1

Form1_Load ...
MaForm=Me

Form1.MaForm.TextBox1.Text=..."

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscription 21 avril 2018 Dernière intervention - 27 oct. 2011 à 12:30
+3
Utile
Bonjour,

Utilises la variable Public Shared de ton Form1, et si la valeur est Nothing, tu créé le formulaire, sinon, tu fais : MaForm.MaVariable.Show(...)

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de NHenry
NHenry 14132 Messages postés vendredi 14 mars 2003Date d'inscription 21 avril 2018 Dernière intervention - 26 oct. 2011 à 19:01
0
Utile
Bonjour,

MaFormCibleChargee.TexBox1.Text="..."

Pour le 2, tu peux mettre une variable shared publique qui contiendra l'instance chargée, puis tu fera :
MaClasseCible.MaVariableShared.Show()

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS et aussi ce lien[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
Commenter la réponse de NHenry
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 26 oct. 2011 à 19:58
0
Utile
Merci pour cette réponse rapide.
Malheureusement, en faisant quelque chose du genre MaFormCibleChargee.TexBox1.Text="..." , ça ne fonctionne pas. J'ai l'impression que la windows form modal n'a pas d'influence sur l'autre window form...

Pour le 2, pourrais tu me développer comment faire pour mettre une variable shared public qui contient l'instance chargée? je suis novice en vb...
Commenter la réponse de chocopops91
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 27 oct. 2011 à 09:58
0
Utile
Super, j'ai réussi à changer le textbox d'un autre formulaire ;) Merci beaucoup.

En revanche, je n'ai pas réussi à empêcher le même formulaire de s'ouvrir plusieurs fois si on clique sur le bouton pour l'ouvrir.

Voici ce que je fais :

Dans le formulaire Home, j'ai un bouton qui lance form1 :
Public Class Home
      Private Sub NewFormItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewFormToolStripMenuItem1.Click
        Dim FOrm1 As New FOrm1

        Form1.MdiParent = Me

        Form1.Show()

    End Sub
End Class


'Et au démarrage de form1, je lance ceci :
Public Class FOrm1

    Public Shared MaFOrm As NewCalibLayout
End Class


Comment empêcher form1 de s'ouvrir plusieurs fois à chaque fois qu'on cliquera sur le bouton dans le formulaire Home ?
Commenter la réponse de chocopops91
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 27 oct. 2011 à 13:47
0
Utile
J'ai réussi! Merci beaucoup!

Pour les débutants comme moi qui ont le même genre de problème, je poste la solution traduite en code :

If form1.Maform is NOthing then
  Form1.show()
Endif
Commenter la réponse de chocopops91
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 27 oct. 2011 à 13:50
0
Utile
En tout cas, tu es vraiment très serviable NHenry, tu m'as débloquer et m'a fait gagner pas mal d'heures de recherches...
Encore un grand merci! Tu auras probablement l'occasion de lire de nouvelles question de ma part, car dans quelques jours je me lance dans la communication de mon appli avec une base access. Je vais probablement rencontrer tout un tas de difficultés ;)
Commenter la réponse de chocopops91
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 30 oct. 2011 à 12:15
0
Utile
Bonjour,
Me revoici avec une question.

Pour éviter qu'un formulaire ne soit lancer plusieurs fois de suite, je testais si celui ci est déjà créé en mettant un variable public shared dans mon formulaire, et je test si la variable est "nothing" avant de le lancer :




    Private Sub NewCalibrationToolStripMenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NewCalibrationToolStripMenuItem1.Click
        Dim NewCalibLayout As New NewCalibLayout

        NewCalibLayout.MdiParent = Me

        If NewCalibLayout.FormNewCalibLayout Is Nothing Then
            NewCalibLayout.Show()
        End If
end sub


Ca fonctionne très bien, car ça me permet de ne pas ouvrir plusieurs fois le même formulaire tant que celui ci est chargé.

Mais lorsque j'ai fermé le formulaire, j'aimerai bien pouvoir le rouvrir! Mais la variable public shared ne se remet pas sur "nothing", donc le formulaire ne se lance pas...

Pour fermer le formulaire, j'ai essayé me.close et Me.dispose, mais sans succès...
Avant de fermer le formulaire, j'ai aussi essayé de faire
NewCalibLayout.FormNewCalibLayout =
Mais dans ce cas là, la fonction me.close() ne fonctionne plus...
Commenter la réponse de chocopops91
chocopops91 7 Messages postés mercredi 26 octobre 2011Date d'inscription 30 octobre 2011 Dernière intervention - 30 oct. 2011 à 12:30
0
Utile
je vous ai embêté pour rien...
J'initialise ma variable shared à nothing juste avant de fermer mon formulaire, et le tour est joué. Je me trompais juste dans la syntaxe...
Commenter la réponse de chocopops91

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.