Я создал пользовательский элемент управления, производный от Panel.Я использую его для отображения изображения, используя свойство BackgroundImage.Я переопределяю метод OnClick и устанавливаю isSelected в true, затем вызываю метод Invalidate и рисую прямоугольник в переопределенном OnPaint.Все идет хорошо, пока я не установил DoubleBuffered в true.Прямоугольник рисуется, а затем стирается, и я не могу понять, почему это происходит.
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);
}
}