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

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

Класс Component является базовым классом для всех компонентов пространства имен System.Windows.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.

Иллюстрированный самоучитель по Visual Basic .NET › Формы Windows, графический вывод и печать › Иерархия пространства имен System.Windows.Forms
Рис. 8.21. Прокрутка изображения базового множество Мандельброта

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

  1. Разместите на форме графическое поле и задайте его свойству SizeMode значение AutoSize.
  2. Найдите большой графический файл.
  3. Приведите процедуру 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, определяемому в классе Scrollable Control, задается значение True. Без этого прокрутка работать не будет. Строки 3 и 4 указывают на то, что в окне должны отображаться обе полосы прокрутки (вертикальная и горизонтальная). В строке 5 общий метод класса System.Drawing.Rectangle создает прямоугольный объект, в 6 раз больший клиентской области формы. Строка 7 приводит графическое поле к заданному размеру, присваивая прямоугольник свойству Bounds, присутствующему во всех элементах. Как указано в комментарии, строка 9 предполагает, что файл с растровым изображением находится в подкаталоге \bin каталога решения – в реальной программе для определения местонахождения файла следовало бы вызвать диалоговое окно Open File.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.