Как показать элемент управления только после полного создания (.NET) - PullRequest
1 голос
/ 06 января 2011

Я создаю сложный UserControl, меня раздражает, что приложение показывает его частично в режиме создания.
Означает, что конечный пользователь может видеть весь процесс создания / рисования (элементы управления, размещенные в этом пользовательском контроле, появляются с задержкой, рисование градиентных блоковони заполняют и т.д.)

Я почти уверен, что есть какая-то команда , скрывающая этот процесс и показывающая управление только тогда, когда он полностью прорисован ...

Может кто-нибудь посоветовать, какзаархивировать это?

Ответы [ 2 ]

3 голосов
/ 06 января 2011

Убедитесь, что ваш UserControl был помечен для двойной буферизации. Это гарантирует, что, когда клиентская область UserControl нуждается в рисовании, она выполняется в закадровом буфере, а затем, когда она завершена, она переносится на экран. Это делает его атомарным, и вы не должны видеть действия рисования, когда они происходят. Чтобы добавить это, используйте следующее в вашем конструкторе UserControl ...

        SetStyle(ControlStyles.OptimizedDoubleBuffer |
                 ControlStyles.AllPaintingInWmPaint |
                 ControlStyles.UserPaint, true);
1 голос
/ 06 января 2011

Ммм, я не думаю, что существует нечто подобное, но есть такие вещи:

  • SuspendLayout (Это делает то, что вы хотите, не показывает процесс рисования, ResumeLayout, чтобы показать изменения макета)
  • Видимый (вы можете изменить его при управлении чертежом)
  • Событие рисования

Вы также можете вызвать Invalidate (который вызывает перерисовку формы)

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

Однако у меня нет идеи о том, как перехватить «до рисования» и «после рисования» (рисование, я думаю, оно срабатывает до рисования, не уверен)

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