Страницы

Поиск по вопросам

понедельник, 16 декабря 2019 г.

Инициализация свойств контрола без перерисовки

#c_sharp #winforms #net #visual_studio


Привет, Хэшкод!
Я создаю контрол, наследуясь от UserControl. К нему добавляю свойство, от которого
зависит внешний вид контрола.
Теперь внимание, если присваивать это свойство в коде конструктора формы сразу после
InitializeComponent(), то сначала пользователь увидит форму такой, как она выглядела
у меня в режиме «дизайна мышкой», и уже после этого контрол перересуется в нужный мне
вид. Плохо.
Пометить свойство с помощью BrowsableAttribute я тоже не могу, ибо тип свойства —
мой собственный класс, настраивать который среда не умеет. Плохо.
Как же сделать так, чтобы инициализация свойства произошла между первыми form1.SuspendLayout()
и form1.ResumeLayout(false)?

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


Ответы

Ответ 1



В .Net есть возможность создания своих редакторов свойств контрола на основе UITypeEditor, что как раз даст возможность изменять свойство контрола через свой пользовательский интерфейс. Ссылки по теме: Класс UITypeEditor Статья: Creating Custom Controls - Providing Design Time Support Пошаговое руководство. Реализация редактора типов пользовательского интерфейса

Комментариев нет:

Отправить комментарий