Переопределить OnPaint - PullRequest
       32

Переопределить OnPaint

3 голосов
/ 10 апреля 2009

Если я переопределю OnPaint и нарисую квадрат на элементе управления, как мне получить этот e.graphics.draw ..., который будет отображаться при предварительном просмотре в конструкторе?

Ответы [ 2 ]

6 голосов
/ 10 апреля 2009

http://msdn.microsoft.com/en-us/magazine/cc164048.aspx

http://msdn.microsoft.com/en-us/magazine/cc164145.aspx

Хотя вы можете вручную зарегистрироваться с Control.OnPaint, чтобы добавить свой дизайн время интерфейса, вы найдете, что переопределение OnPaintAdornments - лучший вариант потому что он вызывается только после пользовательский интерфейс времени разработки / выполнения окрашены, позволяя вам положить глазурь на торт (см. рисунок 20). Просто добавление DesignerAttribute к Класс ClockControl завершает Ассоциация: Скопировать код

[ Дизайнер (TypeOf (ClockControlDesigner)) ] class ClockControl: Control {...}

1 голос
/ 10 апреля 2009

Если вы пытаетесь нарисовать прямоугольник фокуса для своего элемента управления, и он должен быть видимым при манипулировании вашим элементом управления после того, как он был добавлен в форму, тогда подход Gaijin42 должен работать.

Если вы пытаетесь увидеть, как выглядит ваш пользовательский нарисованный элемент управления ...

  • Если вы переопределили метод OnPaint в элементе управления, вы должны увидеть результаты этого OnPaint, когда посмотрите на свой элемент управления после его добавления в форму (или другой элемент управления).

  • Если вы пытаетесь увидеть результаты Paint, глядя на конструктор для самого элемента управления, Я не думаю, что это возможно (по крайней мере, это не было ' т с VS2005):

    К сожалению, это невозможно. Пока вы пишете поведение пользовательского элемента управления код не скомпилирован и дизайнер на самом деле использует обычный пользовательский элемент управления для размещения ребенок контролирует. OnPaint переопределить и т. д. не будет.

    Отладка переопределений в вашем контроле вам нужно запустить его в какой-то хост. VS2005 обеспечивает новый контроль хост для этой цели, но я считаю, что даже этого иногда недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...