Как дождаться завершения строки кода, прежде чем перейти к следующей строке

Я использую Visual Basic 2010, и в моей форме, показанной ниже, мне нужно нажать две кнопки, однако мне нужно, чтобы код первой кнопки был завершен, прежде чем переходить к нажатию следующей кнопки. Есть ли способ позволить этому случиться? Спасибо :)

  Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown

    BindingNavigatorMoveLastItem.PerformClick()))

   'I need this next button click to be carried out after the one above has completely finished

    BindingNavigatorMovePreviousItem.PerformClick()))

End Sub

person Aaron H    schedule 07.08.2013    source источник


Ответы (2)


Используйте методы вместо «нажатий кнопок»:

Private Sub Form1_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
    MoveLastItem()
    MovePreviousItem()
End Sub

Private Sub MoveLastItem()
    bindingSource1.MoveLast();
End Sub

Private Sub MovePreviousItem()
    bindingSource1.MovePrevious();
End Sub

Вы просто вызываете эти методы из обработчиков событий нажатия кнопки.

Private Sub BindingNavigatorMoveLastItem_Clicked(sender As Object, args As EventArgs) Handles BindingNavigatorMoveLastItem.Click
    MoveLastItem()
End Sub

Private Sub BindingNavigatorMovePreviousItem_Clicked(sender As Object, args As EventArgs) Handles BindingNavigatorMovePreviousItem.Click
    MovePreviousItem()
End Sub
person Tim Schmelter    schedule 07.08.2013
comment
Большое спасибо за ваш ответ. Что мне нужно добавить в две части, где вы написали «внедрить логику здесь»? Извините, я все еще очень новичок в коде - person Aaron H; 08.08.2013
comment
@AaronH: тот же код, который у вас сейчас есть в обработчиках событий нажатия кнопки. Просто переместите его оттуда в методы, тогда ваш код также будет более многоразовым и читабельным. Вы можете вызывать методы из любого места. - person Tim Schmelter; 08.08.2013
comment
Спасибо, я попробую. - person Aaron H; 08.08.2013
comment
Проблема, с которой я сталкиваюсь, заключается в том, что, поскольку кнопки BindingNavigatorMoveLastItem и BindingNavigatorMovePreviousItem больше не нажимаются, bindnavigator не перемещает позиции. - person Aaron H; 08.08.2013
comment
@AaronH: Если вы используете BindingSource, вы можете использовать его MoveLast и MovePrevious< /a> вместо этого (отредактировал мой ответ). - person Tim Schmelter; 08.08.2013

Должен признаться, я не делаю VB, но я наткнулся на эту страницу, и она может быть вам полезна.

http://msdn.microsoft.com/en-us//library/system.windows.forms.application.doevents.aspx

Если это не имеет значения, в вашей ситуации я бы либо использовал кнопки для установки флагов и просто проверил бы флаги, либо создал цикл do-while, чтобы код мог завершить выполнение, пока выполняются условия. Однако будьте осторожны с ними, так как бесконечные циклы — это то, в чем они хороши.

Еще мысль включить вторую кнопку в последней строчке кода первой кнопки?

Надеюсь, что-то поможет. Извините, если это бесполезно.

person Meat5000    schedule 07.08.2013
comment
Спасибо за ваше предложение :) проблема теперь решена. - person Aaron H; 08.08.2013