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 :

Rech. Evènement du bouton MaximisedBox de la Form


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut Rech. Evènement du bouton MaximisedBox de la Form
    Bonjour à tous,


    Je recherche le moyen d'intercepter l'éventuel évènement lorsque l'on clic sur le bouton pour agrandir la fenêtre à son maximum. Il me semble que le bouton s'appel MaximiseBox mais je n'en suis pas sur.

    Mon but et d'intercepter non pas lorsque l'on maximise mais surtout lorsque l'on reclic sur ce même bouton pour enlever le Maximise.

    J'essaie de travailler en MDI et mes fenêtre n'ont pas les mêmes tailles si bien qu'a chaque changement de fenêtre je redimensionne la fenêtre mère. Par contre lorsque l'utilisateur maximise la fenêtre (lorsqu'il visualise des courbes). Si l'on reviens à l'affichage normale je n'arrive pas à récupérer la bonne taille car même si je la force, il garde la taille maximum si bien que la taille maxi se retrouve un peut n'importe comment. Difficile à m'expliquer.

    Voila mon code pour afficher l'une des pages.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
                Dim MDIFilleActive As New FormAccueil
                MDIFilleActive.MdiParent = Me
                MDIFilleActive.WindowState = FormWindowState.Maximized
                Me.Size = New Size(MDIFilleActive.Size)
                Me.Height = Me.Size.Height + 60
     
                MDIFilleActive.Show()
    +60 à cause du menu.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Par défaut
    tu travailles donc avec les windows form... si mes souvenirs sont bon il est tout à fait possible de désactiver le maximise ou le minimise et non tu ne peux pas catcher l'évènement de click sur ces boutons mais l'action équivalente sur la fenêtre où ils se produisent.

  3. #3
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    +1. Apparemment le maximize de la fenêtre va t'apporter de problème car tu n'arriveras pas a resizer comme ça t'intéresse.

    Sur les propriétés de ta Form (en design), la porpriétés MaximizeBox peut être mis a false... et alors tu peux gérer toi même la taille avec des boutons ou autre.

    Si tu veux aucun des boutons qui se trouve en haut, c'est la propriétés ControlBox.

    Sinon, si tu veux les garder, j'ai regarder les évènements disponible, et a part: SizeChanged... je vois pas. Après en faisant un truc du genre:

    MaForm.Maximize=False

    Pourrait éventuellement te permettre de redimensionné...

  4. #4
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonsoir

    J'ai bien désactiver les ControlBox des form fille car la je veux qu'il se charge en maximise dans la form mère.

    mais effectivement je n'est rien trouvé non plus comme Evénements pour le MaximiseBox.

    Je vais voir ce que je peut faire

    C'est surtout pour qu'il reprenne sa taille d'origine de la form fille + les 60 en hauteur que cela me gène lors de la désactivation du Maximise de la form mère.

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    700
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 700
    Par défaut
    Bonsoir,
    je crois que pour accéder aux boutons du titre du form, il n'y a que du code non managé en faisant appel aux Api Win, voir ce code (pas de moi), il intercepte bien les messages de ces boutons :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
        <DllImport("user32.dll")> _
    Private Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Integer) As Integer
        End Function
     
        <DllImport("User32.dll", EntryPoint:="GetWindowLong")> _
    Private Shared Function GetWindowLong(ByVal HWND As IntPtr, ByVal Index As Integer) As Integer
        End Function
     
        <DllImport("user32.dll")> _
        Private Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As IntPtr, ByVal X As Integer, ByVal Y As Integer, ByVal cx As Integer, ByVal cy As Integer, _
         ByVal uFlags As UInteger) As Boolean
        End Function
     
        Const WS_MAXIMIZE As Integer = &H1000000
        Const GWL_STYLE As Integer = -16
        Const WM_SYSCOMMAND As Integer = &H112
        Const SC_MAXIMIZE As Integer = &HF030
        Const SC_RESTORE As Integer = &HF120
        Private HWND_TOP As IntPtr = CType(0, IntPtr)
        Const SWP_SHOWWINDOW As Integer = &H40
        Const SWP_NOZORDER As Integer = &H4
        Const SWP_NOMOVE As Integer = &H2
        Const SWP_DRAWFRAME As Integer = &H20
     
        Protected Overrides Sub WndProc(ByRef m As Message)
            If m.Msg = WM_SYSCOMMAND Then
                If CInt(m.WParam) = SC_MAXIMIZE Then
                    'MessageBox.Show("Maximized!!")
                    Dim iStyle As Integer = GetWindowLong(Me.Handle, GWL_STYLE)
                    SetWindowLong(Me.Handle, GWL_STYLE, iStyle Or WS_MAXIMIZE)
                    SetWindowPos(Me.Handle, HWND_TOP, 0, 0, Me.Width + 50, Me.Height + 50, _
                     SWP_DRAWFRAME Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_SHOWWINDOW)
                    Return
                End If
                If CInt(m.WParam) = SC_RESTORE Then
                    'MessageBox.Show("Restored down!!")
                    Dim iStyle As Integer = GetWindowLong(Me.Handle, GWL_STYLE)
                    SetWindowLong(Me.Handle, GWL_STYLE, iStyle And Not WS_MAXIMIZE)
                    SetWindowPos(Me.Handle, HWND_TOP, 0, 0, Me.Width - 50, Me.Height - 50, _
                     SWP_DRAWFRAME Or SWP_NOMOVE Or SWP_NOZORDER Or SWP_SHOWWINDOW)
                    Return
                End If
            End If
            MyBase.WndProc(m)
        End Sub
    Je doute que cela règle ton problème.
    Il y a surement une raison, mais pourquoi la mère s'adapte t'elle aux filles?
    En général on voit plus souvent un form-mère maximisée et ses contrôles s'adapter à elle.

Discussions similaires

  1. [VBA-W] Evénement sur bouton créé dynamiquement
    Par ptilo dans le forum VBA Word
    Réponses: 9
    Dernier message: 21/06/2006, 12h08
  2. [VB.NET] Clic sur un bouton pour afficher une form existante
    Par beegees dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/06/2006, 11h31
  3. [access2002] [bouton De Mise En Forme]
    Par louroulou dans le forum Access
    Réponses: 1
    Dernier message: 02/06/2006, 19h16
  4. Evénement après l'affichage d'une Form
    Par nikhil dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/06/2005, 14h57
  5. Réponses: 3
    Dernier message: 12/12/2003, 14h12

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