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

C# Discussion :

Redimensionner une forme none


Sujet :

C#

  1. #1
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut Redimensionner une forme none
    bonsoir

    Avant de venir ici j'ai beaucoup cherché sur la doc Microsoft et sur les forums et j'ai même trouve un sujet parlant de ça sur le forum mais je ne trouve toujours pas une solution à mon problème

    J'aimerai travailler en windform mais avec une forme none.
    En sélectionnant cette option j'ai perdu tous les avantages que m'offrait windform : déplacement de la fenêtre, fermeture, réduction,...

    Mais la chose qui me gêne le plus et laquelle je n'arrive pas à gérer c'est le redimensionnement de la fenêtre. J'ai essayé de mettre des panels sur les cotes afin de localiser les zones cible et récupérer l'emplacement de la souris afin d'agrandir ou de réduire ma forme mais rien ne marche et j'ai pensé qu'il existerai un booléen qu'il faudra passer a true pour avoir cette fonctionalite mais non.

    si vous avez des idées, je suis preneur.

    merci d'avance

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Bonsoir,

    Je suppose que tu veux parler d'une Form avec la propriété FormBorderStyle à None

    Citation Envoyé par tardash Voir le message
    En sélectionnant cette option j'ai perdu tous les avantages que m'offrait windform : déplacement de la fenêtre, fermeture, réduction,...
    Ah bah c'est le but mon gars, c'est pour offrir a l'utilisateur un choix limité concernant la manipulation de la fenêtre .

    Si c'est pour personnalisé ta Form dans les moindres détails (je suppose que c'est le but de la manœuvre) tu n'as qu'à copier / coller ce bout de code dans ta Form et ça résout ton problème de taille.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
            protected override void WndProc(ref Message m)
            {
                const int RESIZE_HANDLE_SIZE = 10;
     
                switch (m.Msg)
                {
                    case 0x0084/*NCHITTEST*/ :
                    base.WndProc(ref m);
     
                    if ((int)m.Result == 0x01/*HTCLIENT*/)
                    {
                        Point screenPoint = new Point(m.LParam.ToInt32());
                        Point clientPoint = this.PointToClient(screenPoint);
                        if (clientPoint.Y <= RESIZE_HANDLE_SIZE)
                        {
                            if (clientPoint.X <= RESIZE_HANDLE_SIZE)
                                m.Result = (IntPtr)13/*HTTOPLEFT*/ ;
                            else if (clientPoint.X < (Size.Width - RESIZE_HANDLE_SIZE))
                                m.Result = (IntPtr)12/*HTTOP*/ ;
                            else
                                m.Result = (IntPtr)14/*HTTOPRIGHT*/ ;
                        }
                        else if (clientPoint.Y <= (Size.Height - RESIZE_HANDLE_SIZE))
                        {
                            if (clientPoint.X <= RESIZE_HANDLE_SIZE)
                                m.Result = (IntPtr)10/*HTLEFT*/ ;
                            else if (clientPoint.X < (Size.Width - RESIZE_HANDLE_SIZE))
                                m.Result = (IntPtr)2/*HTCAPTION*/ ;
                            else
                                m.Result = (IntPtr)11/*HTRIGHT*/ ;
                        }
                        else
                        {
                            if (clientPoint.X <= RESIZE_HANDLE_SIZE)
                                m.Result = (IntPtr)16/*HTBOTTOMLEFT*/ ;
                            else if (clientPoint.X < (Size.Width - RESIZE_HANDLE_SIZE))
                                m.Result = (IntPtr)15/*HTBOTTOM*/ ;
                            else
                                m.Result = (IntPtr)17/*HTBOTTOMRIGHT*/ ;
                        }
                    }
                    return;
                }
                base.WndProc(ref m);
            }
     
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.Style |= 0x20000; // <--- use 0x20000
                    return cp;
                }
            }
    Pour ce qui est de la barre en haut, tu peux très bien la remplacé par un Panel. Ainsi pour le déplacement, ça se fait avec quelques lignes de codes et des events :

    https://social.msdn.microsoft.com/Fo...m=Vsexpressvcs

    ou

    https://stackoverflow.com/questions/...s-form-movable

    ou


  3. #3
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    ah merci beaucoup!

    j'ai croisé ce code sur stackoverflow mais j'ai pas voulu copier, faut croire que j'ai eu tort...

    j'ai testé et ça fonctionne! je vais étudier le code pour voir comment il est fait.

    merci bien.

  4. #4
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    Pour redimensionner la fenêtre cool c'est ok. j'ai mit un bouton dans la fenêtre et dans l'event click j'ai invoqué Hide() pour réduire la fenêtre mais en faisant sa elle disparait et je ne peut plus la rouvrir a moins de créer une autre fenêtre ou d'utiliser un bouton dans une fenêtre ( appeler show() )pour le faire réapparaître mais je préféré éviter ca.

    si vous utiliser VS vous savez qu'on peut redimensionner les boite a l'intérieur. j'aimerai intégrer cette fonctionnalité dans mon application. je déjà fais un truc similaire en c++ avec MDIarea...
    je sais qu'on peut faire sa en c# mais je ne trouve pas. néanmoins, je sais comment créer des formes a l'intérieur d'une autre (MDIarea) en c#.

    la solution qui me vient à l'esprit c'est d'avoir un MDIarea et d'y ajouter des fenetre qui sont du type none mais le problème serait de les fixer sur les cotés.
    je vais essayer de faire sa mais si vous avez une autre alternative merci de m'en faire part.

    bonne soirée.

  5. #5
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    La méthode hide(), comme son nom l'indique, sert à masquer la fenêtre et non à la réduire.
    Pour réduire une fenêtre, il faut affecter Minimized à la propriété WindowsState de la fiche.

  6. #6
    Membre du Club

    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 47
    Points : 68
    Points
    68
    Par défaut
    merci popo!

Discussions similaires

  1. Redimensionner une form par programmation
    Par kinouseb dans le forum Windows Forms
    Réponses: 3
    Dernier message: 30/10/2009, 06h50
  2. Redimensionner une Form
    Par Loubna.B dans le forum C#
    Réponses: 4
    Dernier message: 19/06/2009, 14h54
  3. interdire de redimensionner une form
    Par sky88 dans le forum Débuter
    Réponses: 1
    Dernier message: 05/11/2008, 22h50
  4. Comment redimensionner une Form ?
    Par kumo dans le forum Débuter
    Réponses: 6
    Dernier message: 14/01/2008, 16h48
  5. Redimensionner une forme
    Par daouame dans le forum Windows Forms
    Réponses: 4
    Dernier message: 26/01/2007, 15h49

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