- ベストアンサー
WithEvents変数について
FormにあるTimerのTickイベントをMuduleにてハンドリング使用としたのですが、 "HANDLES 句には、WithEvents 変数が必要です。"と言うエラーが出てしまいます。ヘルプ等で調べはしたものの、対応の仕方が分らず困っております。お分かりになる方よろしくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
.Netの方だと思うのだが、できればVisual Basic6以前の質問か.Netの質問かを明記していただきたい。まぁこれはOK Webのカテゴリが不備やね。 で、Visual Studio.NETで開発している場合は、君はツールボックスからフォームにタイマーをドロップして、フォームデザイナー下部にTimer1が出来上がっているというスンポーのはずだ。 それではVisual Studioが自動生成したコードを見てみましょう。そうするとTimer1はFriend WithEventsとなっているはずだ。このままではModuleでは使えない。 どうしてもModuleでハンドルしたいのであれば、以下のような方法がある。 1.Form1の方のFriend WithEvents Timer1・・・をコピーしてコメントなりカットなりする。 2.Module1の方に1.でコピーした行を貼り付けて、FriendアクセスをPublicアクセスに変更する。 3.Formの方の「Me.Timer1」となっているものを全て「Module1.Timer1」または単に「Timer1」に変更する。 具体的にはModule1はこんな感じ。で、Form1でMe.Timer1となっている部分を全部Module1.Timer1を指すように変更してあげれば動く事は動く。 Module Module1 Public WithEvents Timer1 As System.Windows.Forms.Timer Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick ・・・ End Sub End Module 余計なお世話だが、やはりフォーム上のコントロールのイベントに対してはフォーム内で対応するのが最終的にプログラムの見通しが良いんじゃないかな。C#やJ#だと複数のイベントハンドラを動的に作成できるのでそちらに移行するのも良いかも。