IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Comment utiliser l'évènement d'un bouton d'une form, sur une autre form ?


Sujet :

VB.NET

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut Comment utiliser l'évènement d'un bouton d'une form, sur une autre form ?
    Bonjour,

    je dispose d'une form A sur laquelle j'ai un bouton permettant d'afficher des résultats, et une form B sur laquelle j'ai un bouton, ou à la fin de son code j'aimerais pouvoir faire appel à l’évènement du bouton de la form A permettant d'afficher des résultats

    Ce que j'ai fait et qui ne fonctionne pas :
    Sur ma form B j'ai tapé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Public Event BtnRechercher()
        Private Sub Modif_donnees_Quit(sender As Object, e As EventArgs) Handles MyBase.FormClosing
            RaiseEvent BtnRechercher()
        End Sub
    Sur ma form A
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private WithEvents Modif As New Modif_donnees
     
    Private Sub ModifDonnees_BtnRechercher() Handles Modif.BtnRechercher
     
    'Code ...
    Je n'ai pas d'erreur, lorsque la form B se ferme, VB va sur la ligne du RaiseEvent mais l'ignore et je ne comprends pas pourquoi...

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    il faut lire des cours pour comprendre la POO
    un form est une classe, pour chaque classe on peut avoir plusieurs instances à un instant T

    quand on s'abonne à un event c'est sur une instance
    vu que tu fais un new Modif_donnees ce n'est pas celui qui est affiché, donc l'event est sur ce form non affiché (si modif_donnees est bien un form) plutot que sur celui que tu voudrais
    il faut donc que ton autre form ait une variable qui pointe vers l'instance de l'autre, tu peux la passer par le constructeur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Merci de l'explication, mais pourquoi dans ce cas le code sur cette page https://stackoverflow.com/questions/...n-another-form fonctionne ?

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Parce que c'est l'inverse, form1 est abonné à l'event de form2 et il connaît l'instance de form2 vu qu'il la crée
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Ok je vois, est ce que tu aurais possibilité de me donner davantage de détails stp concernant la marche à suivre pour mon cas ? Ou m'orienter vers des docs peut-être ?

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre régulier
    Homme Profil pro
    ETUDE
    Inscrit en
    Septembre 2016
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : ETUDE
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2016
    Messages : 360
    Points : 117
    Points
    117
    Par défaut
    Bonsoir vous aller dans myprojet et choisissez Form A comme forme de démarrage ensuit dans votre bouton vous adapter l'exemple suivant à votre Form B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            FormB.Show()
        End Sub

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par Massigne Voir le message
    Bonsoir vous aller dans myprojet et choisissez Form A comme forme de démarrage ensuit dans votre bouton vous adapter l'exemple suivant à votre Form B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            FormB.Show()
        End Sub
    C'est pas parce que t'as fait 10 minutes de vb.net dans ta vie qu'il faut que tu te sentes obligé de donner de mauvais conseils
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Hum ... tout ça ne m'aide pas franchement, je ne souhaite pas la solution toute faite mais têt au moins un exemple basique pour m'aiguiller, le reste je tâcherai de me débrouiller. Je ne sais même pas si le raise event est nécessaire dans mon cas sachant que l'évènement auquel je souhaite faire appel est l'évènement d'un bouton. En clair comment à partir d'une form A faire appel à l'évènement du bouton de la form B

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    je comprends que tu préfères être débloqué et continuer d'ignorer plutot que de passer 20h à lire un cours qui te fera gagner du temps sur tout le reste de ton projet, tu n'es pas le premier
    mais ca reste dommage, parce que réellement ca fait gagner du temps au final

    après j'ai pas compris ce que tu fais il n'y a pas assez de code pour que je puisse deviner (quel form appelle l'autre etc...)

    dans le principe si Form1 ouvre Form2 et que tu veux que form2 fasse quelque chose sur form1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class Form2
      private _f1 as form1
      public sub new(f1 as form1) ' demande une instance de form1 à la création
        _f1 = f1 ' stockage de l'instance dans une variable de classe 
      end sub
     
      private sub unesub()
        _f1.methodeAappeller()
      end sub
    end class
    et sur form1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim f2 as new form2(me) 'me est l'instance exécutant le code (donc l'instance actuelle de form1)
    f1.show


    si c'est form1 qui affiche form2 et que form1 doit faire quelque chose sur ce form2 après alors c'est sur form1 que tu dois avoir une variable de classe de type form2
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    En fait j'ai une form A sur laquelle je renseigne un nom, prenom, date de naissance et un bouton rechercher (The bouton !!) ; le programme est interfacé à une base Access et via ce bouton, me récupère et m'affiche dans une datagridview le résultat de la recherche.
    Sur la form qui a la DGV, j'ai un bouton modifier données, si je sélectionne une ligne du DGv et que j'appuie sur ce bouton, cela m'ouvre ma form B qui me permet de modif mes données. Une fois modifiées, j'enregistre et c'est à la fermeture de ma la form B que j'aimerais faire appel à l'évènement du bouton rechercher de la form A afin d'afficher dans la DGV les modifs actualisées.
    Sinon je manipule les objets du framework sans trop de problème, mais je n'ai jamais développé directement en POO ; mon optique dans un premier temps est de boucler mon programme, il me manque en fait plus que ça ; le reste est opérationnel. Et une fois fait j'approfondirais avec plaisir les points que je n'ai pas compris.
    Je te remercie pour ton bout de code, je vais essayer de voir comment l'adapter dans ma situation.

  12. #12
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Finalement je m'en suis sorti ainsi, je ne sais pas si ma méthode est propre :

    Sur ma form1 ayant le bouton avec l’événement qui m'intéresse j'ai codé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Public Sub rechercher()
     
            Dim sender As Object
            Dim e As Object
     
            Call Btn_Recherche_Click(sender, e)
     
    End Sub
     
    'Code du bouton "Rechercher", The bouton !!
    Private Sub Btn_Recherche_Click(sender As Object, e As EventArgs) Handles Btn_Recherche.Click
     
    'Code ...
     
    End Sub
    Sur ma form 2 où je souhaite faire appel à l'évènement du bouton Btn_Recherche_Click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Modif_donnees_Quit(sender As Object, e As EventArgs) Handles MyBase.FormClosing
            form2.rechercher()
    End Sub
    Et nickel !

    J'aurais pu rendre l'évènement du bouton public et ainsi y accéder directement sans passer par une sub intermédiaire, mais je trouvais ça plus propre de procéder ainsi.

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,

    La méthode public Rechercher() qui appelle le code du bouton, c'est super moche !
    Mets le code de recherche dans la méthode public Rechercher() et appelle cette méthode dans l'event du bouton et dans ton autre form. Ce sera quand même un peu plus propre.

  14. #14
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2013
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 164
    Points : 53
    Points
    53
    Par défaut
    Ca marche, j'ai modifié

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 13/07/2013, 12h24
  2. Réponses: 1
    Dernier message: 30/08/2011, 09h53
  3. comment avoir une valeur d'une form1 dans un autre form
    Par sabrina_beautyful dans le forum Windows Forms
    Réponses: 3
    Dernier message: 18/05/2009, 14h53
  4. Réponses: 6
    Dernier message: 12/02/2008, 14h58
  5. Réponses: 6
    Dernier message: 26/01/2007, 15h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo