Программирование >>  Автоматически обновляемые приложения 

1 ... 64 65 66 [ 67 ] 68 69 70 ... 170


Листинг 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;



1 ... 64 65 66 [ 67 ] 68 69 70 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика