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 :

Modifier bordure GroupBox [Débutant]


Sujet :

C#

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut Modifier bordure GroupBox
    Bonjour à tous,

    Je suis débutant en C# et j'utilise Visual Studio.
    Je fais une application qui nécessite des GroupBox mais j'aimerais modifier leur bordure.
    J'ai vu dans l'aide (ici et ici) que la class GroupBox contenait une propriété "BorderThickness" et j'ai vu que cette propriété nécessite un espace de noms et un assembly (que j'ai ajoutés à mon projet).
    Le problème est que si je mets "GroupBox.BorderThickness="5.0"" dans mon code, j'ai ce message d'erreur :
    Une directive using ou une référence assembly est-elle manquante ?

    Sauf que j'ai bien ajouté ce qui est dit dans l'aide donc je ne comprends pas pourquoi est-ce que ça ne fonctionne pas...

    Merci d'avance de votre aide, Lethgir

  2. #2
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Attention que la directive Using ne suffit pas toujours, il faut aussi des fois pour certains namespace ajouter la référence au projet.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Dans ce cas, quelle référence faut-il ajouter ?

    Puisque la référence System.Windows.Controls n'existe pas (directive nécessaire pour le GroupBox).
    La référence System.Windows.Thickness n'existe pas non plus.

  4. #4
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Oui mais attention, en regardant tes liens d'un peu plus près je me pose une question supplémentaire :

    Qu'elle version de VS utilises tu et pour quel FrameWork cible travailles tu ?
    Tu travailles sur un projet WPF ou WinForm ?

    La je vois que les liens que tu nous indiques pointent sur de la documentation pour le FrameWork 4.5 donc très récent.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    J'utilise Visual Studio 2012 et j'utilise le FrameWork 3.0.
    Je travaille sur un projet WinForm.

    En revanche, dans le second lien que j'ai donné, dans "Information de version", il est indiqué que le BorderThickness est pris en charge dans les FrameWork 4.5, 4, 3.5, 3.0.

  6. #6
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    Je n'ai pas de VS 2012 installé pour le moment, par contre je vois que le premier lien semble être le contrôle utilisé pour le WPF. Mtn je ne suis pas sur que les possibilités soient les mêmes qu'avec un projet WinForm, ce serais à tester.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Effectivement, merci.
    Dans ce cas, est-ce que tu sais comment modifier la bordure d'un GroupBox dans un projet WinForm ?

    J'avais pensé qu'il était peut être possible de modifier le code de ce contrôle (que j'ai trouvé ici) mais le problème est que je ne sais pas du tout comment procéder :
    - Comment modifier ce code dans mon projet ?
    - Quelle partie faut-il modifier pour la bordure ?

  8. #8
    Membre expert


    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 970
    Points : 3 304
    Points
    3 304
    Par défaut
    A mon avis en dérivant la classe oui. et en travaillant sur la méthode déclenché par l'événement OnPaint (je pense). Mais personnellement je n'ai jamais fait ce genre de chose donc je ne saurais pas beaucoup d'aider pour cela.
    Articles sur les technologies .NET

    Une réponse vous a aidé ? utilisez le bouton

    Votre problème est résolu ? utilisez le bouton

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    D'accord, merci !

    Si quelqu'un sait comment faire pour modifier la méthode de OnPaint afin de changer la bordure, son aide serait la bienvenue .

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Ola :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     public Form1()
            {
                InitializeComponent();
                groupBox1.Paint += new PaintEventHandler(groupBox1_Paint);
            }
     
            private void groupBox1_Paint(object sender, PaintEventArgs e)
            {
                GroupBox box = (GroupBox)sender;
                e.Graphics.Clear(SystemColors.Control);
                float epaisseur = 5.0f;
                e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.Black), epaisseur), box.ClientRectangle);
            }
    A+

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Salut lead8209,

    Ta méthode fonctionne très bien pour augmenter l'épaisseur du cadre du groupBox mais le problème est que le texte du groupBox disparait...

    Si jamais je rajoute cette ligne à la fin de la seconde fonction, le groupBox se met à clignoter (une fois le rectangle noir, une fois le texte d'affiché).
    Et si je mets cette ligne à la fin de la première fonction, il ne se produit rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    groupBox1.Text = "Blabla";
    Est-il possible de faire afficher le texte ??

  12. #12
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2010
    Messages
    479
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Août 2010
    Messages : 479
    Points : 762
    Points
    762
    Par défaut
    Salut,
    tiens mais franchement c'est super "dégelasse" mais je sais pas vraiment comment faire autrement ^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     GroupBox box = (GroupBox)sender;
                e.Graphics.Clear(SystemColors.Control);
                float epaisseur = 4.0f;
                e.Graphics.DrawString(box.Text, box.Font, new SolidBrush(Color.Black), new PointF(5, 0));
     
     
                e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), epaisseur), new Point(box.ClientRectangle.X, 5), new Point(box.ClientRectangle.X, box.ClientRectangle.Height)); //|
                e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), epaisseur), new Point(box.ClientRectangle.X + box.Width, 5), new Point(box.ClientRectangle.X + box.Width, box.ClientRectangle.Height)); //|
                e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), epaisseur), new Point(box.ClientRectangle.X, box.Height), new Point(box.ClientRectangle.X + box.Width, box.ClientRectangle.Height)); //_
                e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), epaisseur - 2), new Point(0, 5), new Point(5, 5));
                e.Graphics.DrawLine(new Pen(new SolidBrush(Color.Black), epaisseur - 2), new Point(box.Text.Length * 7, 5), new Point(box.Width, 5));
    Vraiment pas fier de mon code...
    Le truc qui complique c'est de placer le texte sur la ligne horizontale du haut... Du coup u te retrouve avec 2 lignes à tracer et la position de début de la "2ième" ligne dépend de la longueur du texte de ton GB.
    Donc pour faire varier ça je me suis appuyé sur GB.Text.Length * "un code sorti de ma poche xD"
    Si le texte et au dessus ou en dessous ça fait un "code propre". Mais là c'est un peu trop bidouille à mon goût...

    Sinon tu peux placer quelque chose comme ça qui fait plus sympa
    http://www.codeproject.com/Articles/...oupbox-Control

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup de ton aide !

    Je regarderai de plus près le custom groupBox que tu m'as donné mais en attendant la méthode que tu m'as devient me convient .

  14. #14
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Salut
    -----

    Tu peux aussi jeter un oeil sur le forum "Winform", rubrique "topic des composants gratuits". Dans mes contrôles il y a un groupbox complètement personnalisable, inclus le type, la couleur, et la largeur de la bordure.

    A+
    Claude

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Merci ClaudeBg mais d'après ce que j'ai vu, tes groupBox ne permettent pas de mettre du texte comme les groupBox par défaut, je me trompe ?

  16. #16
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 612
    Points : 1 050
    Points
    1 050
    Par défaut
    Salut
    -----

    Désolé du retard de réaction, j'étais occupé.

    Merci ClaudeBg mais d'après ce que j'ai vu, tes groupBox ne permettent pas de mettre du texte comme les groupBox par défaut, je me trompe ?
    Si, ça le permet aussi, on peut le paramétrer comme le GroupBox par défaut, avec texte. Et les sources sont fournis, donc tu peux ajouter aisément des fonctionnalités si tu le désires

    Tu peux aussi placer un label sur un groupBox personnalisé, ça fonctionne également.



    A+
    Claude

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2013
    Messages : 14
    Points : 5
    Points
    5
    Par défaut
    Effectivement, merci pour ton aide .

    Lethgir

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

Discussions similaires

  1. [XL-2000] Modifier bordure curseur
    Par zanimox dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/06/2009, 01h23
  2. [XL-2007] Modifier bordure curseur
    Par eliot.raymond dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 28/05/2009, 18h07
  3. SQL Windows GUPTA centura : Modifier le libelle d'une GroupBox
    Par bdecokere dans le forum Autres SGBD
    Réponses: 5
    Dernier message: 27/06/2008, 12h09
  4. Modifier couleur bordure
    Par pittacos dans le forum wxWidgets
    Réponses: 4
    Dernier message: 01/02/2008, 09h24
  5. Réponses: 2
    Dernier message: 03/05/2006, 22h34

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