Главная » C#, Компоненты » Реакция на изменение свойств

0

Дотошный читатель, выполняющий все шаги вместе со мной, давно уже заметил, что изменение значений наших свойств StartColor и EndColor на виде самого компонента сказывается совсем не сразу (точнее, оно отображается при любой вынужденной перерисовке компонента, например, при смене выделенного компонента). Действительно, ведь никто не сообщает компоненту, что ему нужно немедленно перерисовать себя!

Небольшое изменение кода закрывает этот вопрос (листинг 5.3). Теперь при изменении значения свойств мы сразу видим результат на форме, т. к. метод invalidate (} заставляет компонент перерисовать себя.

Кстати, заметьте, я не вызывал метод Paint О напрямую! Это некорректно по отношению к Windows, т. к. заставляет компонент перерисовываться независимо от того, нужно ли это операционной системе или нет. Метод invalidate () более "нежен" в этом отношении — компонент будет перерисован, когда у операционной системы дойдет до него время.

Лисгинг5 3 Добавляем информацию о свойствах в класс GtadientLabei

[Category("Gradient"}, Description("Цвет начала заливки"}, DefaultValue(typeof(Color), "LightGreen")3

public Color StartColor {

get { return StartColor; }

set { StartColor = value; OnChangeProperties(); }

1

[Category{"Gradient"), Description("Цвет завершения заливки"), DefaultValue(typeof(Color), "DarkBlue")] public Color EndColor

{

get { return endColor; }

set { endcolor = value; OnChangeProperties(); }

}

// Перерисовать себя при изменении свойств private void OnChangeProperties() { Invalidate {) ;

}

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии