Bonjour,
Je suis en train de refaire les composants de bases (Label, TextBox etc...) pour un framework.
J'ai redéfini la classe Control :
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 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 } }
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
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 } }
Je ne comprend pas pourquoi le texte du label n'est pas affiché sans faire ca???
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); }
Partager