J'ai créé un contrôle personnalisé dérivé de Panel. Je l'utilise pour afficher une image utilisant la propriété BackgroundImage. Je redéfinir la méthode OnClick et mettre isSelected à true puis appeler la méthode Invalidate et dessiner un rectangle dans OnPaint substitué. Tout va bien jusqu'à ce que je mette DoubleBuffered à true. Le rectangle est dessiné puis effacé et je n'arrive pas à comprendre pourquoi cela se produit.Un problème de substitution de OnPaint lorsque DoubleBuffered est défini sur
public CustomControl()
: base()
{
base.DoubleBuffered = true;
base.SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
PaintSelection();
}
private void PaintSelection()
{
if (isSelected)
{
Graphics graphics = CreateGraphics();
graphics.DrawRectangle(SelectionPen, DisplayRectangle.Left, DisplayRectangle.Top, DisplayRectangle.Width - 1, DisplayRectangle.Height - 1);
}
}
Je savais qui était facile, je vous remercie! –