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 :

Usercontrol : permettre le redimensionnement et le déplacement par l'utilisateur


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut Usercontrol : permettre le redimensionnement et le déplacement par l'utilisateur
    Bonjour à tous,

    Je suis débutante en C# et je me retrouve face à une impasse.

    J'ai créé un usercontrol (composé de textboxs) que j'instancie sur une picturebox par l'intermédiaire d'un bouton.
    J'aimerais que l'utilisateur puisse le redimensionner et le déplacer sur la pictubox.
    ...plus précisément qu'il puisse par l'intermédiaire de "poignées" ou quelque chose de similaire agrandir l'usercontrol et qu'il puisse le déplacer avec la souris.

    Là, je sèche...
    Comment est-ce que je dois m'y prendre, est-ce que cela est bien possible ?
    Si quelqu'un a des pistes pour m'aider dans mes recherches...

    Merci d'avance !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Les propriétés pour les dimensions sont
    width pour la largeur
    height pour la hauteur
    pour la position
    top pour la position du haut
    left pour gauche.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    btn.width = 250;
    btn.height = 200;
    btn.top = 10;
    btn.left = 30;
    Maintenant à savoir reste de quelle manière tu veux procéder.

    Avec la souris : Drag and drop
    Ou une jolie petite boites tapez vos dimensions et position.

  3. #3
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    Merci beaucoup pour cette réponse mais je me suis peut-être mal faite comprendre.

    En fait mon but est que l'utilisateur puisse l'agrandir avec des "poignées" ou quelque chose de similaire, j'ai fait des recherches dans ce sens là et j'ai trouvé une solution de 2005 avec la création de "handle" mais j'ai lu que gdi+ ne permettait plus de créer ces poignées de redimension.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2007
    Messages : 82
    Par défaut
    Voici un bout de code pondu en quelques minutes pour le déplacement.
    Ajoute un contrôle et amuses toi avec ça

    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
     
    private Boolean activeMouvement = false;        
            private Int32 xAvant = 0;
            private Int32 yAvant = 0;
            private void textBox5_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    activeMouvement = true;
                    xAvant = e.X;
                    yAvant = e.Y;
     
                }
            }
     
            private void textBox5_MouseUp(object sender, MouseEventArgs e)
            {
                if (activeMouvement == true)
                {
                    textBox5.Left = textBox5.Left - (xAvant - e.X);
                    textBox5.Top = textBox5.Top - (yAvant - e.Y);
                    //xAvant = e.X;
                    //yAvant = e.Y;
                }
                activeMouvement = false;
            }
     
            private void textBox5_MouseMove(object sender, MouseEventArgs e)
            {
     
            }

  5. #5
    Membre chevronné Avatar de Jerede
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mai 2010
    Messages : 271
    Par défaut
    Tu peut essayer de faire aussi comme ça, même si j'pense que ça reste du bidouillage

    Un exemple pour la poignée droite d'un panel
    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
     
    const int OFFSET = 10;
     
            private void panel1_MouseMove(object sender, MouseEventArgs e)
            {
                Panel panel = sender as Panel;
     
                //Poignée droite
                if (panel.Width - e.X <= OFFSET)
                {
                    Cursor = Cursors.Hand;
     
                    if (e.Button == MouseButtons.Left)
                    {
                        Point mouse = PointToClient(MousePosition);
     
                        panel.Width = mouse.X - panel.Left;
                    }
                }
                else
                {
                    Cursor = Cursors.Arrow;
                }

  6. #6
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    Merci beaucoup aussi Jerede, je viens de tester en adaptant également pour le redimensionnement "plus petit", ça joue !

    Bonne soirée à vous deux !

  7. #7
    Membre habitué
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 9
    Par défaut
    Citation Envoyé par girouxv Voir le message
    Voici un bout de code pondu en quelques minutes pour le déplacement.
    Ajoute un contrôle et amuses toi avec ça

    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
     
    private Boolean activeMouvement = false;        
            private Int32 xAvant = 0;
            private Int32 yAvant = 0;
            private void textBox5_MouseDown(object sender, MouseEventArgs e)
            {
                if (e.Button == MouseButtons.Left)
                {
                    activeMouvement = true;
                    xAvant = e.X;
                    yAvant = e.Y;
     
                }
            }
     
            private void textBox5_MouseUp(object sender, MouseEventArgs e)
            {
                if (activeMouvement == true)
                {
                    textBox5.Left = textBox5.Left - (xAvant - e.X);
                    textBox5.Top = textBox5.Top - (yAvant - e.Y);
                    //xAvant = e.X;
                    //yAvant = e.Y;
                }
                activeMouvement = false;
            }
     
            private void textBox5_MouseMove(object sender, MouseEventArgs e)
            {
     
            }
    Merci mille fois !!!!

    Pour ceux éventuellement que ça intéresse cette solution fonctionne, il faut juste ajouter dans l'évènement MouseMove :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void textBox5_MouseMove(object sender, MouseEventArgs e)
    {
           textBox5.Left = textBox5.Left - (xAvant - e.X);
           textBox5.Top = textBox5.Top - (yAvant - e.Y);
    }

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

Discussions similaires

  1. Empêcher le redimensionnement d'une colonne par l'utilisateur.
    Par Pwouaro dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/09/2008, 15h02
  2. [MySQL] Permettre l'enregistrement du fichier généré par mysqldump
    Par Dakuan dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/08/2008, 11h32
  3. Réponses: 4
    Dernier message: 07/07/2008, 16h43
  4. déplacement par un index alphabétique
    Par docjo dans le forum IHM
    Réponses: 2
    Dernier message: 24/04/2008, 23h16
  5. redimensionnement des composants par l'utilisateur
    Par osoumayaj dans le forum JBuilder
    Réponses: 2
    Dernier message: 05/10/2006, 10h15

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