Трудности перехода на VB .NET
Трудности перехода на 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