Трусов М. А. Visual Basic .NET
Трусов М. А. Visual Basic .NET - Страница 10

Так как же быть в случае, если вдруг понадобится срочно остановить выполнение цикла? Выйти из положения можно, используя функцию DoEvents. Эта функция предназначена для ускоренной обработки событий, ожидающих своей очереди, чтобы вступить в работу.

Вы, наверное, сталкивались с ситуациями, когда компьютер не спешит выполнять поставленную перед ним задачу, например не сразу реагирует на щелчок кнопки. Функция DoEvents обычно используется для прерывания длительной операции, каковой может быть та же циклическая программа.

Применение этой функции связано с некоторыми неудобствами. К ним можно отнести необходимость повтора команды для остановки цикла. Это объясняется тем, что первая команда меняет только условие выполнения цикла, после чего программа ожидает дальнейших действий пользователя. Кроме того, использование данной функции сильно тормозит работу программы. Но это легко поправить. Достаточно увеличить значения переменных, используемых в цикле, или запускать DoEvents через несколько итераций.

Ниже предлагается пример, являющийся циклической программой, которая выполняет перемещение элемента управления Label. Программа запускается щелчком кнопки Button 1, а останавливается кнопкой Button2. В результате щелчка первой кнопки происходит изменение значения переменной типа Boolean, что обеспечивает условие запуска и работы цикла. Первый щелчок кнопки Button2 меняет значение той же переменной на противоположное. После этого процедура кнопки Button 1 ждет команду на выполнение следующей задачи. И только второй щелчок кнопки Button2 останавливает работу циклической программы.

Трусов М. А. Visual Basic .NET. Создание графических объектов и основы программирования

ГЛАВА 1 Т Программирование на Visual Basic .NET

Итак, разместите на форме следующие элементы управления: две кнопки Button и одну надпись Label. Затем объявите переменную, видимую в пределах модуля. Вот как выглядит код этой программы:

Dim i As Boolean = False

Private Sub Buttonl_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles Buttonl.Click

i = True

Dim a As Double

Dim b As Double

a = Labell.Left

If i = True Then

Do

a = a + 0.0001 Labell.Left = a Applicat ion.DoEvent s() Loop While i = True End If End Sub

Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click i = False End Sub End Class

При работе с графикой имеет смысл применять подобные циклические программы , если есть возможность определить условие выхода из цикла с помощью оператора Exit Do или Exit For. Помните, что чем проще программа, тем она надежнее. Такую программу легче редактировать, в ней легче искать ошибки. А теперь посмотрим, как выглядит циклическая программа с использованием таймера. Расположим на форме таймер Timer, две кнопки Button и текстовое поле TextBox. Кнопки используются для включения и выключения таймера, а в текстовом поле указывается величина статической переменной, которая будет увеличиваться на единицу с каждым включением таймера. Статическая переменная объявляется с помощью ключевого слова Static. Она отличается от обычной переменной тем, что сохраняет свое значение после каждого вызова процедуры. Вот как выглядит код данной программы:



 
 
 
Powered by Exponenta -