Visual Basic.NET. Что нового

Пожалуй стоит начать с системных требований. Для работы VB.NET требуется Windows 2000, Windows XP или Windows NT 4.0. Но программы, написанные на VB.NET пойдут и под Windows 98 c установленной платформой .NET Framework (инсталлятор занимает порядка 20 Мб). По описанию для нормальной работы VB.NET требуется компьютер с процессором Pentium II 450 МГц и выше, и оперативной памятью в среднем около 160 Мб в зависимости от операционной системы. От себя могу сказать, что VB.NET у меня установился нормально под Windows XP, но недостаток оперативки (128 Мб) дает о себе знать.
Итак, что же все-таки нового в VB.NET. Во первых это конечно же среда разработки. Могу сказать что она стала гораздо удобнее. Теперь у заголовка каждой процедуры стоит выключатель, щелкнув по которому вы можете выключить текст данной процедуры, оставив видимым лишь сам заголовок. Также Вы можете сделать невидимым целый ряд процедур, если поместите их в регион, а затем, щелкнув по флажку, сделаете его невидимым. Для этого нужно перед первой процедурой ввести:
#Region "Название региона"
а в конце ввести
#End Region
Таким образом в регион с названием "Windows Form Designer generated code" VB.NET помещает код, где описывается как сама форма, так и компоненты, помещенные на ней(В VB5, VB6 подобное описание не включалось в код программы и находилось в файле формы *.frm). Еще стоит отметить, что теперь VB в принудительном порядке автоматически проставляет логические отступы. При нахождении ошибки в тексте программы VB подчеркивает неправильные команды (как в Word), что гораздо удобнее модальных окон с сообщением об ошибке, выводимых предыдущими версиями VB. Причем проверка стала более тщательна. Например, если Вы введете For..., то оператор будет подчеркнут до тех пор, пока не будет введен Next. Причем если Вы введете For... и нажмете Enter, то Next будет введен автоматически, а если просто уберете курсор с этой строки, то Next придется вводить вручную. Ну и наконец насчет регистра. VB по прежнему не чувствителен к регистру т.е. MyFile и myfile одно и тоже.
Что касается контролов, то теперь их стало гораздо больше. Примечательно, что добавились такие контролы как LinkLabel и NotifyIcon названия которых говорит само за себя (подобные контролы под VB5, VB6 есть на моем сайте). Вместо элемента CommonDialog теперь отдельные контролы типа OpenFileDialog. У контролов добавились новые свойства. Например у контрола TextBox появилось свойство Lines - массив строк. Также у всех контролов теперь вместо свойства Caption свойство Text.
Наконец перейдем к самому главному - что же изменилось в самом языке. Могу сказать, что несмотря на кардинальное изменение языка это по-прежнему VB. Пусть Вас не пугают страшные рассказы о том, что язык стал слишком сложен и не доступен. VB по-прежнему прост в использовании. Изменения в языке на мой взгляд пошли только на пользу. С первого взгляда может показаться, что VB стал сборником API функций с видоизмененными названиями (особенно когда дело касается графики). Например, среди стандартных Вы встретите такие методы как DrawIcon, DrawPolygon и т.д. Несколько изменились типы переменных. Теперь переменная типа Integer занимает 4 байта (как переменная Long в предыдущих версиях бэйсика). Два байта занимает переменная типа Short. А тип Long занимает 8 байт. Теперь целые переменные можно объявить двояко. Либо Short, Integer, Long, либо Int16, Int32, Int64. Кстати в VB.NET переменные нужно обязательно объявлять. Появилась возможность объявить несколько переменных через запятую, указав один раз для них тип:
Dim p1, p2, p3 As Long
Т.е. все переменные получили тип Long (в VB5, VB6 при таком объявлении тип Long получит только переменная p3, остальные переменные будут типа Variant). Также появилась возможность объявить переменную и сразу указать ее начальное значение:
Dim p As Integer = 10
Еще несколько полезных нововведений коснулись массивов. Появилась возможность в коде формы объявлять глобальные массивы. Также появилась возможность изменять размерность массива даже если он был объявлен как статический:
Dim m(10) As Integer
Redim m(20)
Теперь перейдем к событиям. Событий стало гораздо больше. Например появились так нехватавшие всем события как MouseHover, MouseEnter, MouseLeave (MouseEnter возникает сразу как только мышка окажется над объектом, MouseHover - когда мышка задержится над объектом некоторое время). Если Вы поместите на форму например кнопку и дважды щелкните по ней, то перейдете в окно кода, где будет введен такой текст:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click

End Sub
В аргументах объект sender возвращает нам объект, в котором произошло событие (в нашем случае это кнопка Button1). Объект e включает в себя аргументы, передаваемые событием. Например для события MouseDown он будет включать в себя номер нажатой кнопки и координаты мыши. Handles определяет какое событие и для какого контрола произошло. Как Вы видите само название Button1_Click не имеет никакого значения и может быть произвольным (например cmd1_Click). В VB.NET нет возможности создавать контролы с одним именем т.е. создавать массивы контролов. Вместо этого можно объединять процедуры обработки событий для разных контролов:
Private Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click, _
Button2.Click, CheckBox1.Click
' К примеру узнаем имя объекта, в котором произошло событие
msgbox sender.name
End Sub
Как вы видите можно даже включать контролы разных типов. После Handles можно также перечислять разные события (например Button1.MouseDown, Button1.MouseMove), но при этом должен совпадать тип объекта e. Например для MouseMove - e As System.Windows.Forms.MouseEventArgs т.е. события Click и MouseMove объединять нельзя. Чтобы отследить события для формы используйте MyBase (например ...Handles MyBase.Click).
Теперь немного о графике. В VB.NET больше нет таких знакомых операторов как Line, Pset, Circle и т.д. Теперь рисовать можно на любом объекте будь то кнопка, текстовое окошко и т.д. Например:
' Создаем перо красного цвета с толщиной линии 2 пикселя
Dim p As New Pen(Color.Red, 2)
' Рисуем линию на кнопке
Button1.CreateGraphics.DrawLine(p, 0, 0, 50, 10)
Аналогично можно было сделать так
Button1.CreateGraphics.DrawLine(New Pen(Color.Red, 2), 0, 0, 50, 10) 
Как Вы видите цвет теперь выбирается из набора Color. Его теперь нельзя задать просто в виде числа. Поменять для созданного ранее пера p цвет можно так:
p.Color = Color.Green
Причем готовых комбинаций цветов в наборе Color очень много. Конечно можно вывести цвет из составляющих:
p.Color = Color.FromArgb(100, 100, 50)
В VB.NET нет также свойства AutoRedraw. Теперь, чтобы картинка сохранялась на экране ее нужно перерисовывать при каждом обновлении.
Хочу обрадовать еще одним новшеством. Наконец то можно сохранять картинки в различных форматах (gif, jpeg и т.д.).
Hosted by uCoz