プロが教えるわが家の防犯対策術!

お世話になります。

vb.netにて、コントロール類のイベントが完全に終了した直後に、特定の処理を行う方法を探しています。例えば、フォーム上のButton1のEnterイベント(下記コード)が完全に終了した直後に、ある特定の処理ができればと思います。

'Button1を張り付けたフォーム
Private Sub Button1_Enter(sender As Object, e As EventArgs) Handles Button1.Enter
  '(Enterイベントの処理)
End Sub


サイト上にて、Buttonを継承させたButtonExクラスを作成し、Enterイベントが終了してから自作のEnteredイベントを発生するボタンを利用する方法を見つけました(下記コード)。しかし、この方法でも私が望む動作に至らなかったので、ButtonExクラス内のOnEnterイベントが終了してから特定の処理ができればと思います。

'Enterイベント終了後にEnteredイベントを発生させるButtonExクラス
Public Class ButtonEx
 Inherits Button
 Public Event Entered(sender As Object, e As EventArgs)
 Protected Overrides Sub OnEnter(e As EventArgs)
  MyBase.OnClick(e) 'ここでButtonExのEnterイベントが発生する。
  RaiseEvent Entered(Me, e) 'ここでButtonExのEnteredイベントが発生する。
 End Sub
End Class

'ButtonExを張り付けたフォーム
Private Sub ButtonEx1_Entered(sender As Object, e As EventArgs) Handles ButtonEx1.Entered
 '(ButtonEx1のEnterイベント終了直後に行いたい処理)
End Sub


1つ思いついたのが、タイマーコントロールを利用する方法です(下記コード)。

'Button1、Timer1を張り付けたフォーム
Private Sub Button1_Enter(sender As Object, e As EventArgs) Handles Button1.Enter
 '(Enterイベントの処理)
 Timer1.Interval=1
 Timer1.Enabled = True 'このとき以外は、Timer1.Enabled = False にする。
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
 Timer1.Enabled = False
 '(Button1のEnterイベント終了直後に行いたい処理)
End Sub


Enterイベントで例を記載しましたが、他のイベント(Validatedイベント等)でも同様のことができる方法を探しています。Timerのイベントを用いた方法よりも良い方法がありましたら、ご教示下さい。


宜しくお願い致します。

A 回答 (1件)

間違っていたらすみません。


例外処理では駄目なのでしょうか?

'Button1を張り付けたフォーム
Private Sub Button1_Enter(sender As Object, e As EventArgs) Handles Button1.Enter
 Try
   '(Enterイベントの処理)
 Finally
  '(Enterイベント終了直後に行いたい処理)
 End Try
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!