2016-08-05 2 views
0

그냥 비주얼 베이직을 배우기 시작 .. 루프를 사용하는 경우루프를 사용하여 버튼 클릭으로 라벨 텍스트를 변경 하시겠습니까?

이 작동 :

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 

    Dim d As Integer = 1 

    Do While d < 5 

     MessageBox.Show("Value: " & d) 
     d = d + 1 

    Loop 

End Sub 

를 완료 할 때까지 내가 한 번의 클릭

로 최종 출력을 제공 레이블 텍스트에 사용하려는 경우 상자 메시지가 팝업
Label2.Text = ("The value of i is: " & i) 

어떻게하면 단추를 클릭 할 때만 반복 할 수 있습니까? if 문을 추가해야합니까?

답변

0

루프가 너무 빠르며 이벤트의 모든 항목이 완료 될 때만 UI가 업데이트됩니다. 루프 (스레드)에 지연을 추가하고 강제로 UI를 새로 고칠 수 있습니다. 여기

Dim d = 1 

    Do While d < 5 
     Label1.Text = ("The value of i is: " & d) 
     d = d + 1 
     Thread.Sleep(1000) 
     Me.Refresh() 
    Loop 

, Thread.Sleep(1000)는 현재 실행중인 thread을 일시 중지하여 지연을 만듭니다. 값은 밀리 초 단위입니다. Me.Refresh() 폼을 다시 그리도록합니다.

이 방법은 문제를 해결하는 권장 방법은 아니지만 올바르게 작동합니다.

0

어떻게하면 단추를 클릭 할 때만 반복 할 수 있습니까? 진술을 추가해야합니까?

물론 ... 당신이 Dim에서 Static에 "D"당신의 선언을 변경할 수 있습니다,이 같은 If 문을 사용

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 
    Static d As Integer = 1 

    If d < 5 Then 
     Label2.Text = "The value of `d` is: " & d.ToString 
     d = d + 1 
    End If 
End Sub 
관련 문제