Свойство управления инициализацией без перерисовки - PullRequest
0 голосов
/ 23 февраля 2012

Я создаю элемент управления и добавляю свойство (внешний вид элемента управления зависит от него). Как я могу установить это свойство:

  1. Я не могу установить свойство в конструкторе формы сразу после вызова InitializeComponent(). В этом случае пользователь увидит два кадра инициализации формы: первый - после InitializeComponent(), а второй - после установки свойства, которые вызывают перерисовку элемента управления. Bad.

  2. Также я не могу пометить свой объект BrowsableAttribute, потому что тип свойства - это мой собственный класс, который нельзя настроить в «окне свойств». Также плохо.

Итак, как я могу инициализировать свойство между form1.SuspendLayout() и form1.ResumeLayout(false)?


В идеале мне хотелось бы иметь возможность писать код прямо в соответствующем поле «окна свойств». Например, я бы написал new MyClass(param1, param2), если тип свойства MyClass.

1 Ответ

1 голос
/ 23 февраля 2012

Не заставляйте контроллер перерисовывать при изменении свойства. Это необязательно, когда вы инициализируете элемент управления, и когда пользователь изменяет свойство, оно будет перерисовано в следующем событии рисования. При необходимости пользователь может вызвать .Refresh () для вашего элемента управления после установки свойства, чтобы принудительно перерисовывать вручную.

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