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 :

[VS 2005][WinForms][IHM] Changer l'apparence d'un conteneur sans modifier ses enfants


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [VS 2005][WinForms][IHM] Changer l'apparence d'un conteneur sans modifier ses enfants
    Bonjours à tous,

    ça fait quelques temps que je suis inscrit sur ce site, je ne m'étais pourtant jamais exprimé () car j'ai toujours trouvé réponse à mes questions avec un minimum de recherche... Je profite donc de mon premier post pour remercier l'ensemble de l'équipe pour leur efficacité

    A part ça je suis en train de devenir dingue pour un truc tout bête...
    Je travaille en ce moment sous Visual Studio 2005 sur un projet Winforms avec le framework 2.0. J'ai fait une première version du projet qui marche très bien mais dont l'interface est basique, mon chef m'a donc demandé de la rendre plus jolie.

    C'est là que cette tâche qui ne devait me poser aucun problème se transforme en galère...
    En modifiant mon interface, je me suis aperçu que lorsque je modifie par exemple la propriété Font d'un champ GroupBox avec le concepteur de Visual, la propriété Font de tous les Controls contenus dans mon GroupBox est mise à jour automatiquement avec la même valeur !
    En gros, je veux juste augmenter la taille du texte de mon GroupBox, et Visual me grossit aussi les champs qui sont dedans !

    Bien sûr, je peux m'en sortir en modifiant ensuite la police des contrôles enfants du GroupBox, je retrouve alors le résultat recherché, mais je perd beaucoup de temps et ça me rend fou !
    En plus, si je place mes champs dans le GroupBox après avoir modifié sa police, le concepteur met encore à jour la police de mes champs...
    J'ai cherché dans les options de Visual si c'est paramétrable, je n'ai rien trouvé qui s'en rapproche...

    Je me pose la question si cette répercussion des modifications d'un conteneur sur ces enfants est un choix volontaire de la part des développeurs de Visual ou si c'est un bug...
    Si c'est un choix délibéré, déjà je doute fortement de son utilité, de plus je me demande pourquoi cela n'est pas paramétrable ? Serais-je passé à côté du paramètre dans les options de Visual Studio ?
    Si c'est un bug, l'installation du SP1 règle-t-il l'affaire ? (Oui je devrais l'installer mais l'install ne marche pas sur mon poste et je l'ai remise à plus tard...)

    N'ayant pas trouvé de discussion là-dessus sur le forum, je me demande si je suis le seul à m'énerver sur ce truc, peut-être que pour vous c'est logique et même très utile au quotidien, mais personnellement je trouve ça tellement bête...

    Je compte sur vous pour éclairer ma lanterne si une solution existe, ou pour me dire de faire avec si c'est comme ça et pis c'est tout...

    Merci d'avance et bon dev à tous

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 195
    Points
    5 195
    Par défaut
    salut

    tu as des propriétes genre AutoScale définit par défaut à Font qui en en changeant la valeure (genre none), pourrait résoudre la "propagation" de la police

    Et pour répondre à la question du choix volontaire, disons que c'est voulu

    Pourquoi : Pour simplifier la "propagation" d'une mise à jour de la police de ta fenetre.. Imagine, moi qui suit bigleux, je bascule en font 17 Pouces et beh,
    j'aime autant que cela soit fait sur tous les éléments.. et comme nous, les informaticiens on est plutot flemmard, si cela se fait automatiquement en changeant uniquement la font du controle de Plus haut niveau contenant les autres, ca evite de parcourir tous les controles de l'application pour leur appliquer la nouvelle taille... avec l'effet indésirable que cela peut parfois générer quand on ne souhaite pas repercuter ce changement

    Je crois également que cette propriété par défaut à Font correspond au fonctionnement natif de windows.. Si tu changes ta police de caractère au niveau "système", il est logique d'en voir les effets partout...

    Enfin, bon, c'est juste une approche avant d'aller manger et pour pas te laisser dans un doute horrible pendant l'heure du déjeuner

    The Monz, Toulouse
    The Monz, Toulouse
    Expertise dans la logistique et le développement pour
    plateforme .Net (Windows, Windows CE, Android)

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci pour la rapidité de ta réponse The Monz

    J'ai essayé de jouer sur la propriété AutoScaleMode de ma Form, pour les trois valeurs possibles j'ai le même comportement.
    En fait, si j'ai bien compris, cette propriété sert à redimensionner automatiquement la taille de ma fenêtre et de ses champs lorsque je change la taille de la police de la fenêtre (si Form.AutoScaleMode = Font).
    Malheureusement, elle ne permet pas d'éviter la propagation de la taille de la police sur les contrôles enfants.

    Cela dit en lisant la documentation autour de AutoScaleMode et ta réponse, je comprend mieux le pourquoi de cette propagation. Il suffit de regarder une interface faite par Microsoft (la boîte de dialogue d'impression par exemple) pour se rendre compte qu'une seule police est utilisée, toujours la bonne vieille Ms Sans Serif à la même taille et au même style sur toute la fenêtre.
    Ainsi d'après Microsoft une fenêtre ne devrait qu'une seule police, dans ce cas le choix de la propagation cela ne me choque pas.

    Ce que je trouve dommage c'est que cette propagation ne concerne pas seulement la taille de la police, mais les propriétés d'apparence des contrôles.
    Ainsi si je veux changer la couleur de fond de ma fenêtre, je vais voir tous mes champs prendre la même couleur, pour un résultat assez moche si je ne choisi pas la couleur "Control".

    Bon j'ai essayé diverses solutions, j'ai finalement réussi à m'en sortir en utilisant une solution bien simple: pour chaque type de contrôle, je crée une classe qui hérite du Control correspondant en renseignant dans le constructeur les propriétés que je ne veux pas voir bouger par "propagation".

    J'ai remarqué que le fait de créer des contrôles dérivés revenait très souvent sur le forum, j'ai l'impression qu'on est obligé de le faire pour créer la moindre interface avec un look un poil particulier.
    Si on utilise les classes Control dans les dériver, on obtient une interface certes un peu austère, difficile à customiser par la suite, mais qui ressemble aux autres interfaces de Microsoft, et qui s'intègre donc visuellement très bien dans un environnement Windows.
    C'est là que je comprend mieux le choix de MS: ainsi, les applications .Net utilisant les classes Control du framework sans les dériver ont toutes le même look, qui est pas terrible terrible mais homogène avec le thème de l'OS.
    Par contre, si on veut faire une interface avec un look particulier, il faut s'y prendre à l'avance (et ça me servira de leçon ...)

    Bon je considère mon souci comme résolu, je suis désolé si je vous ennuie à parler autant... mais bon pour une fois que je m'exprime autant le faire pleinement !

    Bonne journée à tous

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/07/2006, 12h20
  2. [Java 3D] Changer l'apparance d'objets WaveFront
    Par otarie10 dans le forum 3D
    Réponses: 1
    Dernier message: 10/04/2006, 10h20
  3. [C# 2.0][VS 2005] Winform multilingue
    Par totoen dans le forum Windows Forms
    Réponses: 2
    Dernier message: 22/02/2006, 13h29
  4. Changer l'apparence du graph dans un TChart
    Par FredericB dans le forum C++Builder
    Réponses: 2
    Dernier message: 05/10/2005, 21h55
  5. [JFrame] Changer l'apparence avec un look and feel
    Par ixterm dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 04/10/2005, 15h14

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