Нарисованный прямоугольник появляется только в последнем экземпляре моего userControl - PullRequest
2 голосов
/ 14 апреля 2011

У меня есть userControl, который имеет несколько программно нарисованных прямоугольников. Мне нужно несколько экземпляров этого userControl в моей форме (см. Изображение). Проблема в том, что только последний экземпляр покажет нарисованные фигуры!

Я думаю, это как-то связано с рисованием поверхности или обработчиком события Paint

На случай, если это поможет, вот код, который я использую в своем контроле:

private void MyUserControl_Paint(object sender, PaintEventArgs e)
{
    showHoraireMaitresse();
    Rectangle rec = showDisponibilités();

    var b = new SolidBrush(Color.FromArgb(150, Color.Blue));
           e.Graphics.FillRectangle (b, rec);
    showOccupation();
}

   private void showHoraireMaitresse()
    {
        heureDebut = 8;
        for (int i = 0; i < 14; i++)
        {
            //Label d'heure -> This shows just fine
            addLabel(i, heureDebut);

            //Rectangles d'heure -> This shows only in last instance
            var rectangle = new Rectangle(180 + i * largeurDUneHeure, 14, largeurDUneHeure, 30);
            surface.DrawRectangle(defaultPen, rectangle);
        }
        addLabel(14, heureDebut);
    }

enter image description here

Спасибо!

1 Ответ

1 голос
/ 14 апреля 2011

Без дополнительной информации, я собираюсь догадаться, что «поверхность» является статической.

Проследите через OnPaint и проверьте, какой элемент управления рисует, и каковы границы для «поверхности». Возможно, все элементы управления рисуют один и тот же прямоугольник.

...