お世話になります。
VB2005を使用しています。
初歩的な質問で申し訳ございません。
DoLoop中にDoEventで開放した時に処理できるイベントで気になった箇所があるのでお願いします。
現在時刻をDo~Loopを使用してStopボタンが押されるまでLabelに表示しているのですが、Stopボタンを2回クリックしないとClickイベントが動作しません。
DoEventを使用し、イベントは1回のクリックですべて見られないのか教えて頂きたいです。
尚、Loop内にStopボタンのFocusSetするとクリック1回で、関わるイベントすべて動作してくれるのは調査済みです。
Public Index As Integer = 0
Private Sub BtnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStart.Click
Dim NowTime As String
Dim NowMilliTime As Integer
Dim FNowMilli As String = ""
Index = 0
Do
NowTime = System.DateTime.Now
NowMilliTime = System.DateTime.Now.Millisecond
FNowMilli = Format$(NowMilliTime, "000")
Label1.Text = NowTime
Label2.Text = FNowMilli
'BtnStop.Focus()
My.Application.DoEvents()
If Index = 1 Then
Exit Do
End If
Loop
End Sub
Private Sub BtnStop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnStop.Click
Index = 1
End Sub
ボー さん こんにちは。
> Stopボタンを2回クリックしないとClickイベントが動作しません。
> DoEventを使用し、イベントは1回のクリックですべて見られないのか教えて頂きたいです。
StartボタンのClickイベント中に処理しているので、Clickイベントが未完了のままです。
その為、フォーカス(Captureの方?)がStartボタンに残っています。
ですから、次のClick(厳密に言えばMouseUp)が行われるまで、マウス操作の対象はStartボタンのままなのではないでしょうか?
#ですら、1度のClickでは反応できません。
SetFocusの代わりに、
> BtnStart.Capture = False
で、Captureを解除してみるとか・・・
なるほど!
確かにそうでした。
未完了だからと言われるまで全然気がつかなかったです。
Focusを移動したら出来たので、そこに問題があるのだと一点凝視してました…
モヤモヤがなくなりました。
早期回答、ありがとうございます!
ツイート | ![]() |