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 userforme et messageBox


Sujet :

VB.NET

  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut Fermeture userforme et messageBox
    Bonjour à tous,

    Je rencontre un problème lorsque je souhaite fermer mes userformes ou mes messagebox.

    En effet, j'ai plusieurs fenêtre dans mon prjet visual avec un boton suivant et un bouton précédent, c'est ce dernier qui me pose problème. Lorsque je clique dessus toutes les pages précédentes se ferment. j'utilise ce code

    Me.close()

    dans la fonction bouton. Je souhaiterais simplement fermer la page pour revenir à la précédente mais je reviens directement à la page d'accueil.

    Idem lorsque j'utilise un messagebox, une fois que l'on a cliqué sur ok pour fermer la fenêtre toutes les pages se ferment sauf la page initial d'accueil.

    Quelqu'un aurait-il une idée?

    Merci d'avance pour vos réponses.

    P.S. certaines messagebox fonctionnent correctement alors qu elle me semble codé sur le mm model.

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    Bonjour

    Je pense qu'il faut utiliser la propriété visible du formulaire.

    Quand tu veux l'afficher tu verifies si ton formulaire n'existe pas déjà en mémoire et tu l'affiches en passant à true ca propriété visible, à false pour le masquer et passer à un autre formulaire.

    Je sais pas si ca t'aidera

    EDIT : Je viens de me rappeler que ce type de programmation s'appelle MDI
    http://plasserre.developpez.com/cour...ws-forms1#LX-D


    ++

  3. #3
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Bonjour,

    Utilises-tu les propriétés MDI?
    Ta feuille principale doit être en "UseMdiContainer = True".
    Ensuite, quand tu crée une feuille, elle doit être enfant de cette feuille principale:

    Dim MdiChild as new "Feuille" (Nom de ta feuille)
    MDIChild.MdiParent = Me
    MDIChild.Show()
    Ainsi, quand tu utilises la propriété me.close, seul la feuille enfant instancié et fermé.

    En espérant t'avoir aider.
    Bonne journée.

    Ps: Attention a la différence entre .show et .showdialog aussi...

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Août 2005
    Messages
    483
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 483
    Par défaut
    plop

    ah bah le temps que j'edite mon poste (s'etait la pause cafe) chapeau_bas t'as indiqué la méthodologie

    ++

  5. #5
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Dsl mais ça ne fonctionne pas.

    Je travail sous visual basic express 2005 pour info.

    Par ailleurs, est ce que je devrais ajouter un intitulé en en-tête comme un Imports?

  6. #6
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Hum....

    Disons que Frm_Princ est ta feuille principale.
    Quand tu cliques sur Suivant de Frm_Princ, sa t'ouvres une nouvelle feuille. (Nommé Frm_1)

    Dans ta fonction btn.clic tu dois avoir:
    Dim Mdi1 as new Frm_1
    MDI1.MdiParent = Me
    MDI1.Show()
    Ensuite, sur Frm_1 tu as deux boutons: Précédent et Suivant.
    Suivant te permet d'ouvrir Frm_2
    Dans précédent tu met :
    Me.Close
    Dans Suivant:
    Dim Mdi2 as new Frm_2
    MDI2.MdiParent = Frm_Princ
    MDI2.Show()
    Et ainsi de suite. Normalement, sa devrais fonctionner Il devrait te fermer que la feuille spécifié. (En ayant spécifié que Frm_princ est ta feuille principale par la propriété IisMdiContainer...)

    De quel intitulé ou en-tête parles tu?

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Merci de ta réponse.

    VB 2005 Express ne reconnait pas la fonction MDI...

    Mon code dans suivant était:

    Mon code:

    Dim page_suiv As New Page_suiv
    page_suiv.ShowDialog()

    ' Dans le bouton suivant.

    Ça m'ouvre correctement ma page pas de problème mais dans précédent, j'avais bien

    Mon code:

    Me.Close ()

    ' Dans le bouton précédent mais ferme l'ensemble de ttes les pages précédentes.

    Le problème est que justement ça ne fonctionne pas pour toutes mes fenêtre... Sur mes trois fenêtres une effectue le précédent correctement. Idem pour les messageBox mm code et certaines ce ferme lors du clic pour les autres elles ferment l'ensemble de l'application.

    Pour l'imports je pensais à une fonction du type Imports.System. ?????

    Voilà je ne comprends vraiment pas dsl.

  8. #8
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Utilise .show à la place de .showdialog.

  9. #9
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Ok je vais essayé avec .show

    Le pb c'est que je n'ai pas accès à la bibliothèque mdi avec avec vb 2005 express... enfin la fonction n'est pas reconnue.

    Par contre, il y a .Parent qui existe je vais essayé de creuser ça.

  10. #10
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Oui c'est vraiment étonnant.
    Tu n'as pas du tout la propriété "Ismdicontainer" quand tu vas sur une feuille en mode design et sur les propriétés?

    Je n'ai jamais développé avec 2005 Express donc je ne sais pas si sa change, mais sa me paraît étonnant que les MDI ne fonctionne pas. Normalement tu ne devrais pas avoir a importé des classes pour sa.

    Je doute que .parent puisse t'être utile, c'est un propriété pour le contrôle et non la form il me semble. Enfin vérifie tout de même, je peux être dans l'erreur.

    Bon courage.

  11. #11
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Chapeau_Bas dsl, effectivement j'ai bien MdiParent, lorsque j'avais copier ta fonction pour test en remplaçant form1 par mon nom de formulaire il y avait eu beug.

    Là ça fonctionne correctement fait les liens grâce à ton second poste mais effectivement j'ai un pb avec UseMdiContainer = True que je n'arrive pas à déclarer.

    IL faut mettre Ismdicontainer= true?

    Pour mes messagesbox, certains fonctionnent et d'autres non. J'ai remarqué que c'était parfois selon l'emplacement dans mes if, elseif etc... est-ce que c'est moi qui cherche des liens la ou il n'y en a pas ou est-ce que ça peut expliquer pourquoi certaines messagbox ferment l'application tte entière quand on clique sur ok et d'autres non alors que j'utilise tjrs le mm code...?

  12. #12
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    L'utilisation de showdialog ouvre la fenêtre désirée et garde le focus quoiqu'il arrive. Cette fenêtre se ferme dès qu'il y a un clic considéré comme "ok" pour faire simple...

    Pour IsMdiContainer :
    Tu te met en mode design. Tu regardes dans les propriétés à droite et tu met la propriété a true.

    Ou alors au chargement de ta feuille principale tu met :
    Me.IsMdiContainer = True
    (Cette propriété est a utilisé une seule fois, elle définie la feuille principale de ton application.)

    Ensuite, en déclarant tes feuilles suivantes comme filles (voir les codes postés précédemment), et en les appelant avec .show, tu devrais avoir qu'une seule feuille qui se ferme à la fois.

    Pour tes messagebox, sa dépend leurs utilisations (si c'est sur une feuille enfant ou la feuille principale. Si tu utilises me.close sur ta feuille principale, toute l'application est fermée)
    Le mieux, c'est que tu postes un exemple de code je pense si tu as encore des problèmes après ce message.

  13. #13
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Chapeau_Bas

    Alors effectivement, j'avais déjà touché à la fonction IsMdicontainer mais j'avais eu un pb que je rencontre encore c'est à dire que le fond de mon formulaire est "vide" et que la page suivante s'affiche dans ce "vide" mais l'interface de ma première page reste devant...

    Ces modifications agissent aussi sur mes messagebox...

    Edit

    Pour info j'ai correctement déf IsMdiContainer une fois et j'ai utilsé ton code "fille" pour les autres.

  14. #14
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Oui, normalement ta feuille principale est une feuille du genre : menu d'openoffice avec: fichier, administration, article outils, aide...

    En gros, ta feuille principale sert de container aux autres pages. Elle sert d'ancrage aux autres feuilles. Normalement tu ne dois pas mettre d'interface dans cette feuille, c'est les feuilles que tu appelles qui doivent en possédés. Après sa dépend ce que tu programmes exactement....

  15. #15
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    Je n'avais pas pensais à ça du coup il faut que je mette une feuille vierge ou j'appellerai les autres feuilles dans un load?

  16. #16
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Hum... mouais, sa peut être une solution.

    Tu met une feuille principales, une feuille type "menu" comme pour word avant d'ouvrir un fichier...

    Tu peut mettre un menu en haut de type "MenuStrip" par exemple, en propriété "Dock = top". Cette feuille sera la base de ton application.

    Ensuite, tu met un bouton commencer dans ton menu, et la, quand tu cliques dessus, sa ouvre ta première feuille. (En déclarant la feuille comme précédemment expliqué...) Et ensuite tu peux t'amuser à mettre autant de feuille que tu veux, elles resteront ouvertes et se fermeront une par une. les messages box seront semblables dans tout les cas normalement.

    Attention, MDIForm.mdiparent = doit être toujours ta feuille principale.

    C'est à dire que quand tu commences ton développement, le bouton commencer mettra
    MdiForm.mdiparent = me.
    Et ensuite, quand tu auras une feuille ouverte, et que par cette feuille, tu veux en ouvrir une autre:
    MdiForm.mdiparent = feuilleprincipale.
    Voila, en espérant que c'est assez clair et que tu approches de la solution.

  17. #17
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2011
    Messages : 12
    Par défaut
    C'est ce que j'ai fait.

    Seul ma première page est dans le "container" les autres sont volantes.

    Merci beaucoup pour ton aide et ta patiente.

  18. #18
    Membre éclairé Avatar de Chapeau_Bas
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Décembre 2010
    Messages : 44
    Par défaut
    Excellent, ravis d'avoir pu t'aider.
    N'hésite pas à mettre la discussion en résolus si tu n'as plus de problème.

    Bonne programmation.

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

Discussions similaires

  1. Fermeture UserForm bloque Excell
    Par Olivierporcinet dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/05/2013, 14h15
  2. Débutant : ouverture et fermeture UserForm
    Par zblook dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2007, 14h20
  3. [VBA-E]Bloquer la fermeture d'un userform
    Par Lexot2 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/10/2006, 17h11
  4. messagebox pdt la fermeture
    Par didi59650 dans le forum Delphi
    Réponses: 6
    Dernier message: 05/06/2006, 23h38

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