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 :

afficher un autre form lorsque je clique sur la croix


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut afficher un autre form lorsque je clique sur la croix
    salut a toute la communauté, je bosse en vb.net 2008, je veux savoir comment faire pour empecher la fermeture de l`application lorsque je clique sur la croix du form, en fait je veux me rediriger vers le form principale (menu) au lieu de fermer toute l`application, j`avais essayé l`evenement formClosing et formClosed mais ca marche pas et l`application est fermée
    merci d`avance pour l`aide

  2. #2
    Membre confirmé
    Profil pro
    Ostéopathe
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ostéopathe

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Salut

    C'est très simple, dans l'évènement FormClosing il faut que tu précises que la fenêtre ne doit pas se fermer

    Tu fait ça grâce à l'argument e de la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MaForm_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
         e.Cancel = True
    End Sub
    En faisant ainsi tu indiques que tu annules l'action de fermeture de la fenêtre, ensuite tu peux ajouter le code que tu veux pour réaliser les actions que tu as décrites (j'ai pas compris alors je mets pas d'exemple de code )

    Ca répond à ta question ?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    merci infiniment .. ca marche, il me reste par curiosité de comprendre c`est quoi le "e" que vous employez

  4. #4
    Membre confirmé
    Profil pro
    Ostéopathe
    Inscrit en
    Juillet 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Ostéopathe

    Informations forums :
    Inscription : Juillet 2010
    Messages : 26
    Par défaut
    Si tu regardes bien, à chaque fois que tu veux saisir du code pour un évènement d'un contrôle l'éditeur génère toujours la même chose :
    • Une procédure Sub dont le nom est celui du contrôle suivi de "_" et du nom de l'évènement
    • 2 arguments : sender et e
    • le mot Handles suivi de l'évènement d'un contrôle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub NomControle_NomEvenement(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Controle.Evenement
     
    End Sub
    C'est important de savoir que le code que tu vas saisir dans cette procédure n'est pas le code de l'évènement, mais le code d'une procédure qui elle est liée à l'évènement.
    En effet tu peux écrire une procédure qui sera appelée pour différents évènements d'un même contrôle, ou même par plusieurs évènements de plusieurs contrôles. Le nom de la procédure n'a aucune importance il faut juste que les arguments des évènements correspondent aux arguments de la procédure

    Dans l'éditeur, c'est le mot Handles à la suite de la déclaration des arguments de la procédure qui te permet de la lier à différents évènements, les évènements étant séparés par des virgules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub MaSub(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button1.Resize, TextBox1.BackColorChanged
     
    End Sub
    Par programme, pour lier un évènement à une fonction tu dois utiliser AddHAndler. RemoveHandler qui a la même syntaxe permet de supprimer la liaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AddHandler Button1.Click, AddressOf MaFonction
    RemoveHandler Button1.Click, AddressOf MaFonction
    Tout cela est faisable si la procédure liée et les évènements ont le même nombre d'arguments, que ces arguments sont de même type et qu'ils sont demandés dans le même ordre.


    Concernant les arguments, maintenant.
    L'argument sender contient le contrôle qui a levé l'évènement. Il est de type Object comme ça il peut être n'importe lequel des contrôles qui existent. Tu peux t'adresser à lui pour savoir par exemple quel est son nom ou de quel type de contrôle il s'agit pour réaliser une action en conséquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Avoir le nom du contrôle
    sender.Name 'Accès direct à une propriété du type contenu dans l'objet
    sender.GetType() 'Pour récupérer le type du contrôle

    L'argument e est un moyen de communiquer avec le reste du contrôle au sujet de cet évènement.
    Si on prend le problèmeque tu as rencontré, lorsque la fenêtre allait se fermer elle a levé l'évènement FormClosing.
    Lorsque la fenêtre lève l'évènement FormClosing elle envoie 2 arguments (récupérés par la procédure liée à l'évènement) : sender un Object qui est la Form elle-même, et e un System.Windows.Forms.FormClosingEventArgs qui est une variable dont les valeurs modifiées par l'utilisateur sont prises en compte par le reste de l'exécution du code dans le contrôle.

    Donc lorsque tu définit la valeur e.Cancel à True, ça n'a un effet que lorsque le code de la procédure liée à l'évènement se terminé et que l'exécution retourne dans le contrôle du contrôle. Là la valeur True de la variable est prise en compte et la fermeture de la fenêtre est interrompue.


    En fonction des évènements le type de e varie. Pour info, le type System.EventArgs ne contient aucune donnée modifiable.



    Est-ce que tu saisis mieux le rôle des deux arguments des évènements ou je t'ai perdu ?
    Si tu es passé de VB6 à VB.Net c'est normal que tu sois paumé car ça a radicalement changé.

    A+

  5. #5
    Membre confirmé
    Inscrit en
    Juillet 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 64
    Par défaut
    merci infiniment, fièr en tant que membre de cette communauté d`avoir quelqu`un pro comme vous

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

Discussions similaires

  1. [2008] Un autre rapport lorsqu'on clique sur un graphe
    Par stever50 dans le forum SSRS
    Réponses: 3
    Dernier message: 27/04/2012, 09h46
  2. afficher hyperlien dans mon site lorsque je clique sur le lien
    Par Richard80 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 23/02/2011, 17h18
  3. afficher une image lorsque je clique sur un bouton
    Par moithibault dans le forum Tkinter
    Réponses: 4
    Dernier message: 06/06/2010, 11h32
  4. Réponses: 0
    Dernier message: 15/09/2009, 18h46
  5. afficher un arbre lorsqu'on clique sur un onglet
    Par caro_caro dans le forum Wicket
    Réponses: 15
    Dernier message: 04/06/2009, 10h24

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