Иерархия пространства имен 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.
Рис. 8.21. Прокрутка изображения базового множество Мандельброта
Прокрутку форм можно протестировать на любом изображении достаточно больших размеров:
- Разместите на форме графическое поле и задайте его свойству SizeMode значение AutoSize.
- Найдите большой графический файл.
- Приведите процедуру 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.