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 :

modification dynamique de la taille d'un user control [Débutant]


Sujet :

C#

  1. #1
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut modification dynamique de la taille d'un user control
    Bonjour,

    tout d'abord, je vous demande de bien vouloir m'excuser mais je ne peux pas ecrire les accents.

    je travaille sur un user control (je me suis fais, a cote, un projet winform qui inclus cet user control, pour les tests). Le probleme c'est que je ne parviens pas a modifier sa taille dynamiquement. Je ne comprend pas ce qu'il se passe d'autant plus que avant ce meme programme etait une winform (executable stand alone) qui fonctionnait parfaitement. Et le simple fait d'en faire un user control semble modifier certaines choses.

    Quelques precsisions:
    Je dois faire le resize dans le constructeur, donc juste apres l'appel a InitializeComponent();
    J'ai essaye plein de choses, du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.Size = new Size(30,30);
    ou encore, juste pour tester:
    j'ai tente d'ajouter un Invalidate() apres, mais rien n'y fait: mon controle reste tel qu'il est dans le designer.

    Avez-vous une idee de ce qu'il peut se passer?


    edit: je travaille avec visual 2008, avec le framework .NET 2.0

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Re,

    j'ai trouve le probleme, mais je ne sais comment le resoudre proprement.
    Le probleme se situe au niveau de ma form de test. Dans cette form, je cree mon user control via le designer (avec la souris donc). Lors de cette creation, une ligne de code est ajoutee dans form1.Designer.cs, une ligne qui fixe la taille du user control, avec la largeur et la hauteur definies par le rectangle que l'on a trace avec la souris.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.myUserControl.Size = new System.Drawing.Size(84, 115);
    Donc pour l'instant, je me suis contente de supprimer cette ligne.
    Mais l'ideal serait que l'utilisateur (celui qui ajoute le user control dans sa form) ne puisse pas modifier lui-meme la taille de ce user control.
    Comment faire?

  3. #3
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Ok alors j'ai trouve une solution. Ca fonctionne, mais je ne sais pas si c'est tres propre.
    Cela consiste a surcharger l'evenement OnResize du user control, en y mettant le code suivant:
    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
    private bool resizing;
     
    protected override void OnResize(EventArgs e)
    {
       if (!resizing)
       {
          resizing = true;
          try
          {
             this.Size = new Size(X,Y);
          }
          finally
          {
             resizing = false;
          }
       }
       else
          base.OnResize(e);
    }
    Je met resolu car cette solution me suffit. Mais si vous avez d'autres solutions plus propres, n'hesitez pas a m'en faire part

    Cordialement.
    r0d (qui se sent un peu seul pour le coup )

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2009
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Février 2009
    Messages : 317
    Points : 560
    Points
    560
    Par défaut
    Bonjour,
    Qu'est ce qui fait que ton UserControl doit être redimensionné ?

    Modifier l'Anchor ou le Dock de celui ci ne suffirait pas ?

  5. #5
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    C'est un peu complique a explique et je n'ai pas le temps de faire des captures d'ecrans.
    En fait, ce controle va etre utilise dans un designer "maison" (un outil qui sert a faire des ihm). Sa taille (et son contenu) depend de plusieurs parametres, ces parametres peuvent etres modifies par l'utilisateur via une fenetre de propriete (exactement comme dans le designer de visual). L'idee c'est que lorsque l'utilisateur modifie ces proprietes, le controle se redessine lui-meme (taille, controles affiches, etc.). Cette facon de proceder est un choix, mais le fait de ne pas laisser a l'utilisateur la possibilite de resizer lui-meme le controle a les avantages suivants:
    - taille du control optimisee (ce controle sera dans une ihm qui contient deja pas mal de choses, il est donc important de minimiser sa taille)
    - on evite un certain nombre d'erreurs possibles dues a une mauvaise manipulation de l'utilisateur

    ensuite, utiliser les anchors serait trop complique dans mon cas, car le contenu de ce controle est genere dynamiquement et est trop complexe pour cela. En fait j'ai implemente moi-meme une sorte de systeme d'ancre (anchor), fort simple mais qui convient parfaitement.

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

Discussions similaires

  1. Modification dynamique de la taille de l'écran
    Par Stane dans le forum Forms
    Réponses: 2
    Dernier message: 30/03/2010, 17h13
  2. Modification dynamique de la taille d'un document
    Par gael dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 15/01/2009, 19h08
  3. Réponses: 1
    Dernier message: 08/06/2006, 11h30
  4. Modification dynamique de la couche alpha
    Par Daedar dans le forum OpenGL
    Réponses: 6
    Dernier message: 22/10/2005, 14h22
  5. [JTree] Modification dynamique du texte à afficher
    Par jIdJo dans le forum Composants
    Réponses: 2
    Dernier message: 17/06/2005, 16h49

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