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 :

Déplacement contrôle personnalisé


Sujet :

Windows Forms

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut Déplacement contrôle personnalisé
    Bonjour,

    J'ai créé un contrôle tout simple qui est uniquement constitué d'un bouton. Celui-ci fonctionne parfaitement lorsque je le place sur une form.

    A des fin de test uniquement (pour commencer...) j'ai essayé de créer dans le code de mon contrôle une méthode permettant d'ajuster la position de celui-ci en fonction de la résolution de l'écran.

    Voici le code de mon contrôle personnalisé :

    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
     
    namespace ControlLibrary1
    {
        public partial class UserControl1 : UserControl
        {
            public UserControl1()
            {
                InitializeComponent();            
            }
     
            public void Res()
            {              
                this.Location = new Point(0, Screen.PrimaryScreen.WorkingArea.Height / 2);
                this.button1.Location = new Point(0, Screen.PrimaryScreen.WorkingArea.Height / 2);
            }
        }
    }
    La méthode Res() ci-dessus permet théoriquement de déplacer le contrôle et son contenu à la nouvelle position lorsque qu'on appelle cette méthode depuis l'appli, j'appelle cette méthode depuis un événement DoubleClick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void Form1_DoubleClick(object sender, EventArgs e)
            {
                userControl1.Res();
            }
    Problème.... le contrôle est bien déplacé à la position voulu mais le bouton n'est plus présent dans le contrôle, je suppose donc qu'il est resté à sa position initiale... en tout cas je ne le vois pas... je me retrouve avec un contrôle à la bonne position mais sans bouton alors qu'au départ il y avait bien un bouton et que j'ai déplacé les deux aux mêmes coordonnées. Au départ j'ai testé de ne déplacé que le contrôle, sans déplacer le bouton car ca me paraissait logique vue que le bouton fait partie intégrante du contrôle mais j'avais le même résultat....

    Donc je souhaiterais savoir pourquoi cela ne fonctionne pas et si il y a une meilleure méthode, je précise tout de même que je travaille avec le compact framework...

    Merci de votre aide...

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 114
    Points : 140
    Points
    140
    Par défaut
    Bonjour,

    tout bêtement, je pense que tu ne vois plus ton bouton parcequ'il est en dehors de ta fenêtre.

    Si je comprend bien ton code, Screen.PrimaryScreen.WorkingArea.Height permet de récupérer la hauteur de ton formulaire (je suppose).
    Ensuite tu place ton control à la moitié de cette hauteur.
    Et enfin tu place ton bouton à la moitié de cette hauteur (encore).
    Et c'est la le problème puisque ton UserControl1 est situé par rapport à son parent (soit le form) mais que ton bouton est placé par rapport à ton UserControl1 (si c'est son parent).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 103
    Points
    103
    Par défaut
    Merci de ta réponse.

    Je me suis rendu compte après coup que j'ai écris une bêtise et que cela fonctionne en déplacant uniquement le contrôle. J'ai dit que ca ne fonctionnait pas mais ai oublié que quand j'avais fait ce test en déplaçant uniquement le contrôle la fonction faisait également un redimensionnement du bouton... et c'est la que ca foirait !

    Par contre lorsque je faisait mon redimensionnant je faisait également un déplacement et effectivement le problème venait du parent ! je placais le bouton aux coordonnées Y de la taille de l'écran divisé par deux. Je placais donc mon bouton à 0,147 mais le problème c'est que le parent est le controle et non la form qui elle fait bien (a peut prêt) la taille de l'écran... en fait je devais placer mon bouton à 0,0 et non 0,147 car dans ce dernier cas celui-ci se retrouve hors du contrôle. Tu avais bien raison donc !

    Merci !

    PS : désolé pour le délestage et suppression du délestage puis édit du message, j'ai un peu cafouillé !

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

Discussions similaires

  1. Classes de contrôle personnalisé (dérivée)
    Par c_jm2 dans le forum wxPython
    Réponses: 2
    Dernier message: 20/01/2009, 23h53
  2. Classes de contrôle personnalisé
    Par Shadok dans le forum wxPython
    Réponses: 4
    Dernier message: 26/11/2008, 16h18
  3. [3.5] Gestion d'évènement d'un contrôle personnalisé
    Par franculo_caoulene dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/09/2008, 17h50
  4. Problème d'Evènement sur contrôle personnalisé
    Par Ishizaki dans le forum ASP.NET
    Réponses: 6
    Dernier message: 08/08/2008, 11h16
  5. [VB.NET] Contrôle personnalisé dans une dll personnalisée
    Par c3b12 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 15/10/2004, 07h56

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