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

VB.NETでForm1とForm2の2個のフォームがあります。そのForm1に対して、下記のアクティブイベントハンドラを作成しています。

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs)
                oveHandler Me.Activated, AddressOf Form1_Activated
:
:
End Sub

しかし、Form1がアクティブになっても、そのイベントハンドラが起動しません。
その原因と解決方法をご教示頂きたくお願いします。

A 回答 (1件)

・oveHandler Me.Activated, AddressOf Form1_Activated は RemoveHandler Me.Activated, AddressOf Form1_Activated の間違いだと思います。


そうすると、ここで Me.Activated(=Form1.Activated)とハンドラの関係を切ってるように見えます。
これの行が正常に実行されたら、以降はActivatedイベントでForm1_Activatedは実行されなくなります。
それは意図しているものなのですか?
・そもそも、 AddHandler Me.Activated, AddressOf Form1_Activated が見当りませんが、どこかで設定されているのですか?

今ある部分だけだと

・そもそもAddHandlerが無いのでActivatedイベントが発生してもハンドラが呼ばれない
・最初にハンドラが呼ばれたあと、RemoveHandlerが実行されて2回目以降はActivatedイベントが発生してもハンドラが呼ばれない

のどちらかが理由に見えます。
    • good
    • 1
この回答へのお礼

質問文に正しくステートメントが表示されていませんでした。
正しくはつぎの通りで、Fotm1がアクティブになっても制御が渡りません。

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) RemoveHandler() Me.Activated, AddressOf Form1_Activated

つぎのステートメントに変更したところ解決できました。

Private Sub Form1_Activated(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Activated

回答ありがとうございました。

お礼日時:2023/10/22 17:22

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A