アプリ版:「スタンプのみでお礼する」機能のリリースについて

FormにあるTimerのTickイベントをMuduleにてハンドリング使用としたのですが、
"HANDLES 句には、WithEvents 変数が必要です。"と言うエラーが出てしまいます。ヘルプ等で調べはしたものの、対応の仕方が分らず困っております。お分かりになる方よろしくお願いいたします。

A 回答 (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#だと複数のイベントハンドラを動的に作成できるのでそちらに移行するのも良いかも。
    • good
    • 0

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