progs.biz  
Начало>VB.NET>Компоненты>Урок 10
C#
VB.NET
Visual C++.NET
ASP.NET
Visual C++ 6
WinAPI
C/C++
Delphi
C++ Builder
Java
SQL
PHP
DirectX
Visual Basic 6.0
Ассемблер
Интернет
Сист. прогр-ние
Pocket PC
Обзор книг
Обзор программ

Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Б. Ивьен и др. Visual Basic .NET. Библия пользователя
Заказать на Озоне



Яндекс-цитирования

VB.NET. Создание компонентов
Урок 10. Реагируем на изменение шрифта контейнера

Хорошо написаные компоненты реагируют на изменение различных характеристих контейнера, на котором они расположены. Например, если вы разместите на форме метку (label) и для самой формы будете менять ее шрифт, наприер, так:

this.Font = new Font( "Arial", 12);

то шрифт на нашем label'е тоже поменяется соответствующим образом.

Давайте сделаем, чтобы наш компонент работал таким же образом - т. е. чтобы он менял свой шрифт, если последний будет изменен у формы.

Создайте проект для нового компонента (см. урок 1). Расположите на нем некоторый label. Именно он и будет менять свой шрифт. И, что самое важное, добавьте следующий код в класс нашего компонента:

    ...
    ' Обрабитка изменения шрифта контейнером.
    Protected Overrides Sub OnParentFontChanged(ByVal e As System.EventArgs)
        ' Перерисовываем при изменении
        ' шрифта контенера.
        Invalidate()
    End Sub

    ' Перерисовка.
    Protected Overrides Sub OnPaint _
      (ByVal e As System.Windows.Forms.PaintEventArgs)
        ' Устанавливаем наш шрифт
        ' как в контейнере.
        Font = Parent.Font
    End Sub
    ...

Логика тут такая - при изменении шрифта контейнером мы вызываем для компонента перерисовку (путем вызова метода Invalidate()) и затем в перерисовке (т. е. в методе OnPaint) мы задаем новый шрифт.

Можно компилировать и запускать тестовую программу (на которою, например, модно добавть к кнопку с приведенном в начале урока строкой по изменению шрифта). Теперь наш компонент будет изменять свой шрифт вслед за контейнером:

Изменение шрифта компонентом

Обратите внимание, что такое поведение будет иметь место и на этапе разработки тестового проекта.

Рассылки нашего сайта на Subscribe.Ru
Visual C++, MFC
C# и .NET
VB.NET
ASP.NET new!
Win API
C/C++
Delphi
Java
HTML, PHP, mySQL, WEB-дизайн
Flash MX
C++ Builder
Ассемблер
SQL Server
DirectX
Обзор книг
Обзор программ
Новости сайта progs.biz


 
 
Копирование любых материалов сайта без разрешения авторов и владельцев сайта запрещено.
© 2002-2008 сайт progs.biz
© 2002-2008 Игорь Алексеев