Question

J'ai un UserControl (WinForms, .net 2.0) et j'ai ceci:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    var rect = e.ClipRectangle;
    var pen = new Pen(Brushes.LightGray, 1);

    e.Graphics.DrawRectangle(pen, rect);
}

En gros, je veux dessiner une bordure sur UserControl, mais le rectangle est également dessiné dans tous les contrôles enfants! Je ne lis jamais qu'il devrait être appelé pour chaque contrôle enfant, existe-t-il une solution?

Était-ce utile?

La solution

Étant donné que les contrôles enfants invalident le parent, la méthode est activée pour chacun d'eux.

Au lieu d'utiliser e comme paramètre (e sera quel contrôle a déclenché l'événement, enfant ou non), utilisez explicitement le nom du contrôle.

Autres conseils

Pourquoi utilisez-vous PaintEventArgs.ClipRectangle pour déterminer les limites du rectangle? Essayez d'utiliser Control.ClientRectangle à la place.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top