Трудности перехода на VB.NET
Возникает заманчивая картина: вы запускаете программу преобразования, немного дорабатываете полученный результат, и программа VB автоматически адаптируется для VB.NET!
Поверьте, этот путь ведет в тупик. Чтобы в полной мере использовать преимущества VB.NET, необходимо основательно разобраться в объектно-ориентированном программировании и принципах работы .NET Framework. Вам не придется запоминать тысячи методов, входящих в .NET Framework, но для сознательного чтения документации или использования средств IntelliSense, встроенных в IDE, нужно знать, как работает .NET. Без хорошего понимания этого материала вы попросту не сможете работать в IDE с дизайнерами форм Windows и Web.
Чтобы представить масштаб изменений, достаточно рассмотреть простейший пример – форму, на которой находится кнопка. В прежних версиях VB весь код, связанный с кнопкой (и выполнявшийся при ее нажатии), находился в процедуре события Click.
Сразу предупреждаю: при размещении кнопки на форме VB.NET среда программирования генерирует значительно больший объем кода. В этой книге мы постараемся показать, почему в этом коде стоит разобраться – причем так, чтобы он казался не сложнее простого обработчика Click.
Приведенный ниже фрагмент (в основном автоматически сгенерированный) размещает кнопку на форме и выводит окно сообщения при нажатии кнопки. Числа в скобках к программе не относятся, они просто используются для ссылок на строки листинга в тексте книги.
(1) Public Class Form1 (2) Inherits System.Windows.Forms.Form (3) #Region " Windows Form Designer generated code " (4) Public Sub New() (5) MyBase.New() ' Вызов необходим для работы дизайнера форм Windows (6) InitializeComponent() ' Дальнейшая инициализация выполняется после вызова InitializeComponent() End Sub ' Форма переопределяет Dispose для очистки списка компонентов. (7) Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components. Dispose() End If End If MyBase.Dispose(disposing) End Sub (8) Friend WithEvents Buttonl As System.Windows.Forms.Button ' Необходимо для работы дизайнера форм Windows Private components As System.ComponentModel.Container ' ВНИМАНИЕ: следующий фрагмент необходим для дизайнера форм Windows ' Для его модификации следует использовать дизайнер форм. ' Не изменяйте его в редакторе! (9) <System.Diagnostics.DebuggerStepThrough() > Private Sub _ InitializeComponent() ' 'Button1 ' Me.Buttonl.Location = New System.Drawing.Point(109, 224) Me.Buttonl.Name = "Buttonl" Me.Button1.Size – New System.Drawing.Size(200. 48) Me.Button1.TabIndex = 0, Me. Button1. Text = "Click me!" ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(5. 13) Me.ClientSize = New System.Drawing.Size(292. 216) Me.Controls.AddRange(New System.windows.Forms.Control() {Me.Button1}) Me.Name = "Forml" Me.Text = "First windows Application" Me.ResumeLayout (False) End Sub #End Region (10) Private Sub Buttonl_C1ick(ByVal sender As System.Object._ ByVal e As System.EventArgs) Handles Buttonl_Click MsgBox("Welcome to Visual Basic .NET!") End Sub (11) End Class
- Классы рассматриваются в главе 4.
- Ключевое слово Inherits описано в главе 5, а формы Windows – в главе 8.
- Новая среда программирования позволяет определять сворачиваемые фрагменты кода (глава 2).
- Конструктор New рассматривается в главе 4.
- В этой строке используется механизм наследования (глава 5).
- Описание форм Windows приведено в главе 8.
- Наследование рассматривается в главе 5, а метод Dispose упоминается в главах 4 и 5.
- События описаны в главе 6. Специфика обработки событий в приложениях GUI рассматривается в главе 8.
- Весь содержательный код этой процедуры проанализирован в главе 8.
- См. главу 8.
- Классы рассматриваются в главе 4.