2011年7月23日土曜日

→→→イベントとプロシージャを動的に結びつける

状況に応じて動的に結びつけるには{AddHandlerステートメント・RemoveHandlerステートメント}を使う


(1)例えば MyClickプロシージャとButton2のClickイベントを結びつけるには


   AddHandler  変数.イベント名 AddressOf イベントの関数


   AddHandler  Button2.Click  , AddressOf  MyClick


フォームにButton1,2を貼り付けてから
Private Sub Button1_Click( .... ) Handles Button1.Click
      AddHandler Button2.Click , AddressOf MyClick
End Sub


Private Sub MyClick( .... ) 
      MsgBox( sender.name )
End Sub


このプログラムを実行するとはじめButton2をクリックしても何も起きない。
Button1をクリックしてからButton2をクリックすると
MyClickプロシージャが呼び出される


Private Sub Button1_Click( .... ) Handles Button1.Click
   MsgBox("はじめ")
        RemoveHandler Button1.Click , AddressOf Button1_Click
        AddHandler Button1.Click , AddressOf MyClick
End Sub


Private Sub MyClick( .... )
         MsgBox("2回目以降")
End Sub


Button1_ClickプロシージャにHandles句があるので、はじめはButton1をクリックするとこのプロシージャ
が呼び出されます。
ところが、このプロシージャの中でRemoveHandlerステートメントが使用されていて、
Button1のClickイベントとButton1_Clickプロシージャの結びつきが削除されてしまう
それで新たにAddHandlerステートメントを利用して
Button1のClickイベントはMyClickプロシージャに結びつけられる

0 件のコメント:

コメントを投稿