Иллюстрированный самоучитель по VB.NET

       

Иерархия пространства имен System.Windows.Forms


Рассмотрев простейшие возможности использования пространства имен Windows . Forms на конкретных примерах, мы переходим к иерархии классов, показанной на рис. 8.20.

Диаграмма выглядит весьма устрашающе, но мы уделим основное внимание главной линии наследования:

System.ComponentModel .Component > Control

Из рис. 8.20 видно, что классы форм и элементов являются производными от класса Control. Например, генеалогия класса Form выглядит так:

ScrollableControl

>ContainerControl

> Form

Рис. 8.20. Иерархия классов пространства имен Windows.Forms

Текстовое поле входит в другую ветвь:

Control

> TextBoxBase

> RichTextBox



> TextBox

Иерархия основных разновидностей кнопочных элементов выглядит так:

Control

> ButtonBase

> Button

> CheckBox

> RadioButton

Класс Control вмещает в себя наибольшее количество функций (более 300) и обладает наибольшими функциональными возможностями. Классы форм и элементов объявляются производными от членов класса Control.

Данная глава дает лишь начальное представление о Windows.Forms. Чтобы овладеть возможностями этого пространства имен на профессиональном уровне, необходимо тщательно изучить электронную документацию и, возможно, купить более специализированную книгу.

Класс Component является базовым классом для всех компонентов пространства имен System. Wi ndows. Forms. В нем собраны члены, необходимые для реализации включения (в частности, размещения элементов на форме или дочерних окон MDI в родительском окне MDI). В основном они реализованы в виде методов интерфейса IComponent. Поскольку класс Component также занимается освобождением ресурсов, расходуемых при визуальной разработке, он реализует IDisposable.

Поскольку класс Control является базовым для элементов и форм, он поддерживает многие операции пользовательского интерфейса, в том числе обработку событий клавиатуры и мыши. Кроме того, он определяет цвет, позицию и размер формы или элемента.

Использование средств базового класса Control (и в частности, обработка ключевых событий) рассматривается в следующем разделе.
Тем не менее сначала мы продолжим путь к формам в иерархии классов System. Windows. Forms. Поскольку среди предков класса Form числится ScrollableControl, формы VB обладают полезной особенностью, которую оценит каждый, кто пытался реализовать форму с прокруткой в VB6:

При выходе за грашцы текущего содержимого форма автоматически прокручивается. Взгляните на рис. 8.21 — на нем изображена форма, позволяющая прокручивать очень большую фрактальную картинку (более 5 Мбайт в запакованном виде!) с базовым множеством Мандельброта. За информацией о множестве Мандельброта обращайтесь по адресу www.olympus.net/personal/dewey/mandelbrot.html.

Прокрутку форм можно протестировать на любом изображении достаточно больших размеров:

  • Разместите на форме графическое поле и задайте его свойству SizeMode значение AutoSize.

  • Найдите большой графический файл.



    Рис. 8.21. Прокрутка изображения базового множество Мандельброта

  • Приведите процедуру Form_Load к следующему виду:

    1 Private Sub Forml_Load(ByVal sender As System.Object,_

    ByVal e As System.EventArgs)Handles MyBase.Load

    2 Me.AutoScroll = True

    3 Me.VScroll = True

    4 Me.HScroll = True

    5 Dim aBigBox As Rectangle = Rectangle.Inflate _

    6 (Me.ClientRectangle. 6. 6)

    7 PictureBoxl.Bounds = aBigBox

    8 ' Предполагается, что графический файл находится в подкаталоге \bin

    9 PictureBoxl.Image = Image.FromFile("Mandelbrot Set.bmp")

    10 End Sub

    Главное место в этом листинге занимает строка 2, в которой свойству AutoScrol 1, определяемому в классе Scrollabl e Control, задается значение True. Без этого прокрутка работать не будет. Строки 3 и 4 указывают на то, что в окне должны отображаться обе полосы прокрутки (вертикальная и горизонтальная). В строке 5 общий метод класса System.Drawing.Rectangle создает прямоугольный объект, в 6 раз больший клиентской области формы. Строка 7 приводит графическое поле к заданному размеру, присваивая прямоугольник свойству Bounds, присутствующему во всех элементах. Как указано в комментарии, строка 9 предполагает, что файл с растровым изображением находится в подкаталоге \bin каталога решения — в реальной программе для определения местонахождения файла следовало бы вызвать диалоговое окно Open File.




    Содержание раздела