|
Программирование >> Автоматически обновляемые приложения
Листинг 6.65. Скрытие свойства или метода от IntelliSense ... string firstNameValue; [EditorBrowsableAttribute(EditorBrowsableState.Never) ] public string FirstName { return firstNameValue; set { firstNameValue = value; . . . Нужно отметить, что на самом деле такое свойство или метод никуда не исчезает, и если его все-таки набрать в редакторе, то с ним можно успешно продолжать работать. Создание собственных элементов управления Кроме использования готовых элементов управления, входящих в поставку Visual Studio, программистам часто приходится разрабатывать свои собственные элементы управления. Далее мы расскажем о некоторых приемах программирования, применяемых при создании таких элементов. Как скрыть свойство или метод от IntelliSense в редакторе кода? Для этого предназначен атрибут EditorBrowsableAttribute. Его применение проиллюстрировано в листинге 6.65. Как скрыть свойства и события из редактора свойств PropertyGhd пр]л создании собственного элемента управления? По умолчанию при разработке собственного элемента все открытые свойства и события отображаются в редакторе свойств PropertyGrid. Если вы не хотите отображать некоторые из открытых свойств или событий, то прикрепите ксоответствующему члену класса атрибут BrowsableAttribute, передав в конструктор значение false (листинг 6.66). рТистинг 6w66; Скрытие свойств и событий из редактора свойств PropertyGrld , - \; . . г , J [BrowsableAttribute(false)] public string FirstName { get { return firstNameValue; set { firstNameValue = value; [BrowsableAttribute(false)] public event EventHandler FirstNameChanged; Если же нужно скрыть свойства или события, унаследованные от базового класса, создайте класс, наследующий system, windows . Forms . Design. ControlDesigner, И, переопределяя методы PostFilterProperties И PostFiiterEvents, удаляйте В НИХ соответствующие свойства и события. Полученный класс укажите как класс-дизайнер для класса элемента управления. Сделать это можно при помощи атрибута System. ComponentModel. DesignerAttribute. Пример В листинге 6.67 показывает, как из элемента управления UserControlDemo удаляЮТСя СВОЙСТВа BackColor, Backgroundlmage, а также события click и Doubleclick. \ Листинг 6.67. Скрытие некоторых свойств и событий элемента управления [Designer(typeof(ControlDesignerEx))] public class UserControlDemo: UserControl { ... class ControlDesignerEx: ControlDesigner { protected override void PostFilterEvents( System.Collections.IDictionary events) events.Remove( Click ); events.Remove( Doubleclick ); base.PostFilterEvents (events); protected override void PostFilterProperties( System.Collections.IDictionary properties) properties.Remove( BackColor ); properties.Remove( Backgroundlmage ) ; base.PostFilterProperties (properties); Как запретить изменять размер элемента управления во время разработки? Нужно создать свой класс Designer (унаСЛедОВанНЫЙ от ControlDesigner) И переопределить в нем свойство seiectionRuies, как показано в листинге 6.68. Листинг 6.68. Запрет на изменение размеров элемента управления class MyControlDesigner: ControlDesigner { public override SeiectionRuies SeiectionRuies return base.SeiectionRuies & -SeiectionRuies.AllSizeable;
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |