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 :

[C# 2.0 /VS2005] Comment redéfinir le Label ?


Sujet :

C#

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 20
    Points : 19
    Points
    19
    Par défaut [C# 2.0 /VS2005] Comment redéfinir le Label ?
    Bonjour,

    Je suis en train de refaire les composants de bases (Label, TextBox etc...) pour un framework.

    J'ai redéfini la classe Control :

    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
     
    public abstract class CCtrl : System.Windows.Forms.Control
        {
           //... avec des attributs, accesseurs et constructeurs qui va bien
     
           private string mTexte;
     
           public virtual string Texte
                {
                    get { return mTexte; }
                    set { mTexte = value; }
                }
     
           public CCtrl() : base()
                {
                  ... un beau constructeur
                }
        }
    et puis j'ai redefini mon Label :

    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
    20
     
    public class CLabel : ControlLibrary1.Ctrl.CCtrl
        {
            #region "Attributs"
                public System.Windows.Forms.Label mLabel = new Label();
            #endregion
     
            //surcharge de l'accesseur
            public override string Texte
                {
                    get { return mLabel.Text; }
                    set { mLabel.Text = value; }
                }
     
            public CLabel()
                    : base()
                {
                  // Constructeur de ma classe de parente
                }
        }
    Quand j'ajoute à mon formulaire mon composant "CLabel", la valeur texte n'est affichée QUE si je surcharge la méthode OnPaint() de la classe CCtrl :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
    {
       base.OnPaint(e);
       System.Drawing.SolidBrush BlackBrush = new System.Drawing.SolidBrush
    (System.Drawing.Color.Black);
       e.Graphics.DrawString(this.Texte, this.Font, BlackBrush, this.Location.X,
     this.Location.Y); 
                }
    Je ne comprend pas pourquoi le texte du label n'est pas affiché sans faire ca???

  2. #2
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Probablement parce que la méthode OnPaint de la classe control n'est pas capable sur base de ta nouvelle classe de récupérer les infos.

    Ne serait-il pas préférable d'hériter de UserControl

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    En fait, pour mon projet, je trouve plus simple de rédéfinir les composants, parce qu'en fait, je vais charger(sauvegarder) le libellé de chaque control dans une langue dans un fichier de ressource.

    C'est à dire que dans le design de Visual Studio je pose mon composant sur un form (CompactFramework au passage) et je renseigne une propriete "Texte" (bien faire la difference avec le "Text"!).
    Cette proprieté au chargement du controle, va acceder au fichier ressource du projet, et :
    - Soit mettre à jour et récuperer la valeur de son libellé depuis le fichier de ressource
    - Soit ajouter la valeur de la propriete dans le fichier source et affecter celle ci au libellé de mon control.

    Comme ca mes fichiers de ressources en fonction des langues sont automatiquement créés et maintenu à jours.

    Et je ne pense pas que ce soit l'utilité d'un user control. Un user control, pour moi, est plus un composant qui est autogerable et peut etre utilisé un peu partout, hors ce n'est pas le cas d'utilisation de mes composants. Puisque un label reste un label, c'est juste sa méthode de chargement qui différe...

  4. #4
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339
    Par défaut
    Ok dans ce cas UserControl n'ai pas une bonne solution.
    Je suppose que c'est du Web que tu fais sinon cela existe déjà dans Visual Studio mais même en Web il existe aussi des possibilités de gestion de la langue sur base d'une ressource sans devoir redéfinir les contrôles.
    Une autre solution est peut être d'hériter directement de Label et de l'enrober pour faire ta propre gestion.

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Ca existe déjà pour une appli non web???

    Alors la je suis preneur?? Ou c qu'on peu trouver ca??

  6. #6
    jab
    jab est déconnecté
    Rédacteur
    Avatar de jab
    Homme Profil pro
    SharePoint developpeur
    Inscrit en
    Février 2004
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : SharePoint developpeur
    Secteur : Service public

    Informations forums :
    Inscription : Février 2004
    Messages : 1 173
    Points : 4 339
    Points
    4 339

  7. #7
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 20
    Points : 19
    Points
    19
    Par défaut
    Ah bas ca va ressembler à ce que je fait, en plus chiant, car il faudra le faire à la main pour tous les composants pour lesquels on veut le multilangue.

    La comme tous les composants dont on se servira seront chargés dynamiquement en fonction de la langue, le développeur aura juste besoin de générer son appli dans les langues qui l'interresse...

    Mais c'est plutot bien l'exemple, ca en interressera peut etre d'autre.

    Merci des infos!

    Cordialement,

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

Discussions similaires

  1. [IDE][VS2005] Comment compiler projet et obtenir un exe ?
    Par Bing dans le forum Visual Studio
    Réponses: 18
    Dernier message: 07/11/2008, 21h15
  2. [IDE][VS2005] Comment installer sans le service pack 2 ?
    Par Abderrahman dans le forum EDI/Outils
    Réponses: 6
    Dernier message: 24/01/2006, 12h30
  3. [VSTO][VS2005] Comment lire fichier PowerPoint pour export ?
    Par MattC dans le forum Framework .NET
    Réponses: 2
    Dernier message: 24/01/2006, 10h04
  4. [IDE][VS2005] Comment compiler pour le framework 1.1 ?
    Par grand chef dans le forum EDI/Outils
    Réponses: 2
    Dernier message: 19/01/2006, 14h33
  5. [IDE][VS2005] Comment afficher la QuickConsole ?
    Par L`artiste dans le forum EDI/Outils
    Réponses: 1
    Dernier message: 08/01/2006, 17h56

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