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 :

Problème fenêtres Appli MDI


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut Problème fenêtres Appli MDI
    Bonjour,

    J'ai une appli MDI très simple avec 2 forms : DocParent.vb (contenant uniquement un menustrip avec 1 seul menu "Nouveau") et DocEnfant.vb (Vide).

    Code DocParent :

    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
    21
    22
    Public Class DocParent
     
        Private NoFichier As Integer
        Public DocActif As DocEnfant
     
        Private Sub NouveauToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NouveauToolStripMenuItem.Click
            With Me
                .DocActif = New DocEnfant()
                .DocActif.MdiParent = Me
                .DocActif.Dock = DockStyle.Fill
                .NoFichier += 1
                .DocActif.Text = "Fichier " & NoFichier
                .DocActif.Show()
            End With
     
        End Sub
     
        Private Sub Form1_MdiChildActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MdiChildActivate
            Me.DocActif = Me.ActiveMdiChild
        End Sub
     
    End Class
    Le docEnfant n'a pas de code et sa propriété WindowState est "Maximized".

    Problèmes :

    1/ Le DocEnfant est bien en taille maxi mais ne fusionne pas avec le DocParent : par exemple chaque fenêtre a ses propres boutons pour réduire fermer ou maximiser or je voudrais qu'ils fusionnent.

    2/ Si j'ouvre plusieurs DocEnfants, j'ai le plus grand mal à les déplacer :ils résistent...

    Merci bien.
    Alexandre

  2. #2
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Bonjour,

    POur 1/

    Je ne pense pas qu'une form child peut se fusionner avec l'MDI.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Merci pour cette réponse.
    Cependant si je clique sur l'icône "Niveau inférieur" de l'enfant puis sur l'icône "Agrandir" de l'enfant, les 2 fenêtres fusionnent...

    Bref, merci pour votre aide.

    Cdt,
    Alexandre

  4. #4
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Oui se fusionnent c'est normal ! mais d'après ce que j'ai compris c'est que tu voulais pas de bouttons de contrôle pour ta forme enfant.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Sisi, je veux des boutons, ce que je veux simplement c'est que par défaut les 2 fenêtres soient fusionnés (et non pas qu'on voie les contours de la fenêtre enfant).
    Lorsqu'on ouvre Excel : on voit bien des boutons (réduire/agrandir...) pour le doc en cours comme pour l'appli mais les 2 objets apparaissent comme un seul : c'est ca que je voudrais.

    Mais le vrai problème c'est les fenêtres acariâtres... c'est peut-être lié.

    Thanks.

  6. #6
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Aah, je vois mieux.
    je viens de faire le test.
    Il suffit de mettre la propriété WindowState de la fenêtre enfant sur Maximized pour qu'elle soit fusionnée avec ton MDI.

  7. #7
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Je me demande si on a bien compris ton problème.

    Que veux-tu dire par :

    Citation Envoyé par House MD Voir le message
    2/ Si j'ouvre plusieurs DocEnfants, j'ai le plus grand mal à les déplacer :ils résistent...

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 306
    Par défaut
    Effectivement... le fait est que c'est compliqué à expliquer si je tente de les cliquer-glisser, la fenêtre refuse de glisser, puis finalement glisse, mais quelquefois revient à sa position initiale... c'est très aléatoire.

    Je ne peux pas être plus clair.
    Merci bien.

  9. #9
    Membre émérite
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Par défaut
    Il est clair que tes fenêtres ne sont pas en Maximized, tu ne pourrais pas les déplacer... essaye de voir de ce coté...

    Si tu as un problème avec le déplacement c'est seulement parce que tes fenêtres sont dockées en "Fill" (qui est a priori pas adapté aux MdiForm...).

  10. #10
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Je pense que on problème vient de cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .DocActif.Dock = DockStyle.Fill
    En effet, le principe d'un conteneur MDI est juste d'être l'hôte des formulaires enfants, d'ailleurs dans Word, Excel ou autre on peut en avoir beaucoup d'ouvert à la fois et les déplacer, ou les redimensionner à sa guise, ce qui exclu l'utilisation de la propriéte Dock, qui sert à "verrouiller" un contrôle.

    je réécrirai ce bout de code de la sorte:

    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
    21
     
    Public Class DocParent
     
        Private NoFichier As Integer
        Public DocActif As DocEnfant
     
        Private Sub NouveauToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles NouveauToolStripMenuItem.Click
            NoFichier += 1
            DocActif = New DocEnfant()
            With DocActif
                .MdiParent = Me
                .Text = String.Format("Fichier{0}", NoFichier)
                .Show()
            End With
        End Sub
     
        Private Sub Form1_MdiChildActivate(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MdiChildActivate
            DocActif = ActiveMdiChild
        End Sub
     
    End Class
    Je n'ai pas testé ce que ça donne, j'écris tout cela de mémoire mais cela me semble correct.

    En espérant avoir été utile.

  11. #11
    Membre éclairé Avatar de tssi555
    Analyse système
    Inscrit en
    Juillet 2008
    Messages
    594
    Détails du profil
    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Juillet 2008
    Messages : 594
    Par défaut
    Bonjour,

    En faisant des testes, j'ai eu à peu près le même problème que toi (quand je charge une feuille enfant, elle se fusionne pas avec l'MDI, comme Word, ...).

    J'ai procédé ainsi :

    -Dans mon application, j'ai crée une nouvelle form.
    -En mode designer, j'ai laissé la propriété WindowState par défaut (Normal)
    -Puis, dans l'événement clique de mon menu strip placé sur mon MDI (là où j'appelle ma form enfant), dans cet événement je mets la portion de code suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     MaFormEnfant.MdiParent = Me
     MaFormEnfant.WindowState = FormWindowState.Maximized
     MaFormEnfant.Show()
    Et comme ca, quand je clique dans mon menu, la form enfant s'ouvre fusionné dès le départ.

    J'éspère pouvoir t'apporter une aide utile.

Discussions similaires

  1. [WD15E] Problème de transparence sur fenêtre mère MDI
    Par Benj30 dans le forum WinDev
    Réponses: 6
    Dernier message: 16/01/2012, 20h03
  2. Réponses: 5
    Dernier message: 12/08/2008, 17h49
  3. Connaître la fenêtre active d'une appli MDI
    Par zworg dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/10/2006, 13h28
  4. Fenêtre enfant MDI : passage paramètre à la création
    Par Orangina dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/07/2004, 12h55
  5. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/05/2002, 16h17

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