[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:
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:
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:
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???