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

Windows Forms Discussion :

Manipulation une feuille MDI


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Par défaut Manipulation une feuille MDI
    Bonjour

    j'avais un Probleme au niveau manipulation une feuille MDI

    mon objectif c'est de mettre un boutton sur la feuille MDI et à partir ce boutton je manipule toutes feuilles

    exemple :
    Bouton nouveau

    lorsque j'affiche la feuille de Bon de commande
    je clique sur le boutton nouveau ,je traite une procedure specifique pour Bon de commande

    lorsque j'affiche la feuille de facture

    je clique sur le meme boutton et je traite une procedure specfique pour les factures

    y a t il quelqu'un qui peut m'aider pour ce probleme

    Merci

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Personnellement, je déconseillerai ce type de procédé car rien ne t'empêche d'avoir plusieurs form enfants ouvertes en même temps ... donc galére pour limiter le traitement à une seule de ces forms.

    Cela étant dit, tu peux lors du new de la form enfant ajouter un handler (via addhandler) sur le .click du button de la form MDI qui fait appel à la méthode particuliére.
    Quand tu fermes la form, tu fais un remove de ce handler.

    Mais bon, la tu essayes de dynamiser un menu commun alors qu'à terme tu vas forcément avoir des différenciations dans les menus de chaques forms... donc à éviter je pense.

    Cdt.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Par défaut re
    merci pour votre réponse

    mais malheureusement j'ai rien saisi car j me suis un débutant en vb .net

    pour moi je veux ouvrir plusieurs form fille en méme temps de differents chose ( bon de commande , facture, etc ......)

    mais je veux seulement qu'il soit un seul bouton qui fait des procedures spécifique pour chaque feuile sachant que les feuilles se différent au niveau traitement ( bon de commande , facture,etc...) aisni au niveau designer

  4. #4
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Oui, j'avais compris...

    Et je me répéte :
    Citation Envoyé par olsimare Voir le message
    tu essayes de dynamiser un menu commun alors qu'à terme tu vas forcément avoir des différenciations dans les menus de chaques forms... donc à éviter je pense.
    Donc si tu insistes, je veux bien te mettre un exemple de code pour aider à la compréhension mais ça te rendra service sur le moment et pas à long terme.

    Cdt.

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 13
    Par défaut re
    Ok
    j'attends votre exemple

    Merci

  6. #6
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 183
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 183
    Par défaut
    Bonjour.

    Puisque tu insistes...

    Donc j'ai un form mdi avec un bouton Button1 qui ouvre une form1, un Button2 qui ouvre une form2 et un bouton btnAction qui lance l'action à effectuer suivant la form :
    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
     
    Public Class FormMDI
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim f As New Form1
            f.MdiParent = Me
            f.Show()
        End Sub
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim f As New Form2
            f.MdiParent = Me
            f.Show()
        End Sub
     
    End Class
    Et 2 forms :
    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
     
    Public Class Form1
        Private btnAction As New Button
        Public Sub New()
            InitializeComponent()
        End Sub
        Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            btnAction = Me.MdiParent.Controls("btnAction")
            AddHandler btnAction.Click, AddressOf goAction
        End Sub
        Private Sub goAction(ByVal sender As Object, ByVal e As EventArgs)
            MsgBox(Me.Text)
        End Sub
        Private Sub Form1_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
            RemoveHandler btnAction.Click, AddressOf goAction
            MyBase.Finalize()
        End Sub
     
    End Class
    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
     
    Public Class Form2
        Private btnAction As New Button
        Public Sub New()
            InitializeComponent()
        End Sub
     
        Private Sub Form2_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            btnAction = Me.MdiParent.Controls("btnAction")
            AddHandler btnAction.Click, AddressOf goAction
        End Sub
        Private Sub goAction(ByVal sender As Object, ByVal e As EventArgs)
            MsgBox(Me.Text)
        End Sub
        Private Sub Form2_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed
            RemoveHandler btnAction.Click, AddressOf goAction
            MyBase.Finalize()
        End Sub
     
    End Class
    Voilà... ça marche tant que tu assures que seule une form est ouverte.

    NOTA POUR CEUX QUI TOMBERAIENT LA DESSUS :
    C'est à proscrire et je suis pas fier de ce code ... et je m'en veux !

    Cdt.

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Voilà... ça marche tant que tu assures que seule une form est ouverte
    Ca limite un peu l'intérêt d'utiliser une form MDI... quitte à utiliser cette approche, mieux vaut utiliser les évènements GotFocus et LostFocus plutôt que Shown et Dispose. Comme ça la seule contrainte est d'avoir une seule form fille active en même temps (tu peux en avoir plusieurs ouvertes)


    De toutes façons, il vaudrait mieux créer différents boutons, que tu affiches ou cache selon la form fille sélectionnée... comme dans Visual Studio par exemple, où les menus et barres d'outils changent selon le contexte (code, concepteur graphique, etc...). Ce serait nettement mieux, en termes d'ergonomie.

    Sinon, autre possibilité, avec un seul bouton: tu crées une interface, avec une méthode "DoAction" par exemple, et toutes les form MDI implémentent cette interface. En cas de clic sur le bouton, tu appelles cette méthode sur la form fille active, via l'interface.

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

Discussions similaires

  1. Pb de mise en mosaique de forms dans une feuille MDI
    Par Gilles BILLARD dans le forum Windows Forms
    Réponses: 1
    Dernier message: 21/05/2009, 07h04
  2. Comment ajouter une feuille MDI fille dans une DLL ?
    Par Najdar dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/02/2007, 16h30
  3. comment rendre une form une feuilles MDI
    Par NAIMA2 dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/01/2007, 20h17
  4. [VB]Fond d'ecran dans une feuille MDI
    Par zejo63 dans le forum VB 6 et antérieur
    Réponses: 14
    Dernier message: 23/01/2006, 17h47
  5. [VB.NET] Manipuler une feuille via un module
    Par dinbougre dans le forum Windows Forms
    Réponses: 8
    Dernier message: 13/01/2005, 17h15

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