発生したイベントを把握するには?


ashigiku  2006-02-19 20:32:59  No: 130304

VB.NETでクリックされるまで
処理を中断するプログラムを書いています。

Public Sub Weit()
  Me.WeitFlg = True

  Do
    System.Threading.Thread.Sleep(100)
    My.Application.DoEvents()
    If Me.WeitFlg = False Then Exit Do
  Loop

End Sub

上記の関数で処理を中断し、

Private Sub ALL_Click _
  (ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles Me.Click, labMain.Click, pictMain.Click

  WeitFlg = False
End Sub

ALL_Click関数で処理を再開させようと目論んでいるのですが、
何故か一回目のクリックが無視され、
二回目のクリックで処理が再開されます。
WeitFlg = Falseにブレークを設定し、
処理を追ってみても、
一回目のクリックではALL_Clickに入っていないようです。

一回目のクリックがどんなイベントを発生させてるか判別したいのですが、
なにか方法はありますか?
また、問題となっている部分についての指摘もあればお願いします。


我龍院忠太  2006-02-20 17:39:43  No: 130305

もしかしてWeit()をButton1_Clickなんかから呼んでませんか?
こうするとWeit()が終わるまで、Button1_Clickが終了せず、
次のクリックイベントが正しく処理されないと思われます。
VBはイベントドリブンなのにDo〜Loopで処理を止めるというのは
あまり良いスキームとは言えませんが、どうしてもこの方法でやりたいのなら、
タイマーなんかを使って、

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
        Timer1.Enabled = True
End Sub

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Timer1.Tick
        Timer1.Enabled = False
        Weit()
End Sub
などとWeitをタイマーから呼ぶ方法も有ります。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加