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 :

[C#] Location Ajout Control


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut [C#] Location Ajout Control
    Bonjour,
    Je cherche à faire une fonction qui me permette de "remplacer" le Controls.Add(Control),...
    Mon but étant de pouvoir ajouter un Control à un Container, mais sans que sa position Visuel change,...
    Or, avec le Controls.Add(Control), la Location ne change pas, tandis que le repère lui change, ce qui décale le Control ajouté,...

    J'ai fait en sorte que si j'ajoute un Control à un Container2 lorsque ce Control était dans un Container1 contenant Container2, ça marche, mais je ne réussis pas à faire une fonction générique qui ajuste la LOcation du Control, quelque soit l'endroit d'ou vienne ce Control,...

    Si quelqu'un a une idée, je suis preneur,...

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    si je comprends bien, tu voudrais déplacer un contrôle d'un container à l'autre, mais sans changer sa position absolue sur l'écran ? sans doute en rapport avec ta question d'hier

    Tu pourrais faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void MoveControlToParent(Control ctl, Control newParent)
    {
        Point locAbsolute = ctl.Parent.PointToScreen(ctl.Location);
        Point locRelative = newParent.PointToClient(locAbsolute);
        ctl.Parent.Controls.Remove(ctl);
        newParent.Controls.Add(ctl);
    }
    Pas sûr que ça marche tel quel, mais tu vois l'idée...

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Effectivement, c'est bien en rapport avec ma question d'hier

    Merci pour ta réponse, j'ai fait autrement, mais c'est pas très propre (je vais chercher tous les parents jusqu'à arriver à ma base.FindForm(), et j'ajoute tous les points puis je fais la différence X et Y entre le Container de départ et le Container de fin),...
    J'essaies ta solution demain, merci Tomlev

  4. #4
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    Okay, je constate que je m'étais embêté pour rien du tout, je ne connaissais pas les fonctions PointToScreen et PointToClient, qui sont très pratique, et, comme un crétin, j'ai réécris un truc déja fait (enfin bon, c'est en prenant des murs qu'on apprend,...)

    Merci TomLev, c'est Nickel, et ça prend moins de place dans mon code

    PS: pour que le code marche il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctl.location = locRelative;

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2007
    Messages
    359
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 359
    Par défaut
    C'est encore moi

    J'ai lu la msdn sur PointToScreen, et il n'y a pas beaucoup d'infos, ce que j'en retiens c'est :
    Transforme un point du système de coordonnées de concepteur d'activité au système de coordonnées d'écran
    C'est très bien, seulement, ce que je ne comprends pas, c'est pourquoi dans ce cas le Control qui appele la fonction influe sur le résultat, étant donné que ça donne la position du point sur l'écran, pour moi, ça ne devrait pas

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Hurin Voir le message
    PS: pour que le code marche il suffit de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ctl.location = locRelative;
    Oups, je me disais bien que j'oubliais un truc...

    Citation Envoyé par Hurin Voir le message
    J'ai lu la msdn sur PointToScreen, et il n'y a pas beaucoup d'infos, ce que j'en retiens c'est :
    ...
    Déjà tu n'as pas regardé la bonne page de l'aide à mon avis... je suppose que c'était celle là ? C'est la méthode PointToScreen de la classe ActivityDesigner
    Celle que tu utilises ici est Control.PointToScreen

    Citation Envoyé par Hurin Voir le message
    C'est très bien, seulement, ce que je ne comprends pas, c'est pourquoi dans ce cas le Control qui appele la fonction influe sur le résultat, étant donné que ça donne la position du point sur l'écran, pour moi, ça ne devrait pas
    Ben c'est logique, puisque les coordonnées d'un contrôle sont relatives au contrôle qui le contient... si tu ne sais pas par rapport à quel contrôle c'est relatif, tu ne peux pas convertir les coordonnées.

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

Discussions similaires

  1. Ajout control clavier sur autocomplete
    Par VooDooNet dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 03/05/2010, 18h44
  2. Problème ajout control Image dans fenetre
    Par fantk dans le forum C#
    Réponses: 3
    Dernier message: 28/05/2009, 16h45
  3. Ajout control .NET
    Par oclone dans le forum ASP.NET
    Réponses: 0
    Dernier message: 02/03/2009, 09h25
  4. AJout controle d'une BDD
    Par theoffss dans le forum VB.NET
    Réponses: 2
    Dernier message: 25/05/2008, 11h48
  5. ajouter controle xrc
    Par Jérémy Lefevre dans le forum wxWidgets
    Réponses: 2
    Dernier message: 06/07/2007, 09h57

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