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 :

fermeture d'un form sur click [Débutant]


Sujet :

VB.NET

  1. #1
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut fermeture d'un form sur click
    Bonjour,

    Voilà une heure que je cherche à fermer une fenetre aboutbox sur simple click

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub AboutBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Click
            Me.Close()
        End Sub
    Rien n'y fait, même en pas à pas, avec point d'arrêt sur la procédure, le code n'y rentre pas.

    A quoi cela peut-il être dû ?

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    bonjour,
    modifier Private par Protected

    MOHAMMED
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  3. #3
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    C'est vrai que je ne maîtrise pas encore très bien les subtilités de Protected, Friend etc... mais là, ta suggestion ne marche pas.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 50
    Points : 68
    Points
    68
    Par défaut
    je me demande si le nom du button est : Mybase ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub AboutBox_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Click
            Me.Close()
        End Sub
    Vous avez la réponse à votre question ? Mettez votre sujet en

    Une personne vous a correctement aidé ? Cliquez sur le +1

  5. #5
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Non, il n'y a pas de bouton. AboutBox est une fenêtre modale de type Windows Form qui affiche le "à propos" de l'appli.
    Je voulais juste provoquer la fermeture de cette fenêtre sur clic en n'importe quel endroit de la fenêtre.
    La Sub est dans la class AboutBox bien sûr

  6. #6
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Visiblement, il doit y avoir un truc ou une propriété spécifique à mon appli (ou à mon form) qui fait que ça ne marche pas parce que, dans un projet Windows Forms de base, créé pour l'occasion, ça marche très bien.
    Mais je ne vois pas quoi

  7. #7
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    Bon j'ai trouvé d'où ça vient.
    Si mon form contient un panel dont le docking est fill, un clic sur le form lève l'event Panel1.click et non Form.Click
    Du coup c'est assez embêtant car ce même panel comporte des contrôles et il en va de même avec ces contrôles.
    Donc, si je veux tester un clic quelque part dans le formulaire, je dois créer un event moncontrol.click pour chacun des contrôles contenus et situé au premier plan.
    N'y at-il pas une solution plus clean ?

  8. #8
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Durant le load de ton AboutBox, tu peux exécuter une petite boucle récursive qui ferait un AddHandler sur l'event Click de chaque contrôle vers ta procédure de fermeture.

    Ca revient au même que de le faire manuellement mais au moins, t'es sûr de ne rien oublié. (et c'est sourtout moins "fatigant")
    Kropernic

  9. #9
    Membre actif
    Inscrit en
    Juillet 2013
    Messages
    777
    Détails du profil
    Informations forums :
    Inscription : Juillet 2013
    Messages : 777
    Points : 275
    Points
    275
    Par défaut
    J'ai suivi ton conseil, même si j'espérais que VB.NET nous offrait la possibilité de faire plus simple :

    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
    16
    17
    18
    19
    20
    Private Sub AddClickEvent(ByVal parentctl As Control)
            If parentctl.HasChildren Then
                For Each ctl As Control In parentctl.Controls
                    AddClickEvent(ctl)
                Next
            End If
            AddHandler parentctl.Click, AddressOf AboutBox_Click
     
    End Sub
     
    Private Sub AboutBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            ' ajout événement Click pour chaque contrôle contenu dans le formulaire
            AddClickEvent(Me)
    End Sub
     
    Private Sub AboutBox_Click(ByVal sender As System.Object, ByVal e As EventArgs)
            ' Ferme le form lorsqu'on clique dessus.
            Me.Close()
        End Sub
    Merci de ton aide !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/05/2010, 15h52
  2. Réponses: 15
    Dernier message: 22/02/2009, 14h36
  3. interdire fermeture form sur condition
    Par santacrus dans le forum VBA Access
    Réponses: 7
    Dernier message: 25/10/2008, 16h19
  4. Ouvrir un form sur double-click, suite
    Par Nessie37 dans le forum IHM
    Réponses: 23
    Dernier message: 08/10/2008, 17h56
  5. évènement sur click pour 50 boutons d'une form
    Par timotep dans le forum Windows Forms
    Réponses: 4
    Dernier message: 22/07/2008, 11h56

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