- PR -

イベントの受け取り方法について

1
投稿者投稿内容
FX
常連さん
会議室デビュー日: 2004/12/06
投稿数: 49
投稿日時: 2005-10-14 17:48
Visualstudio.NET2003で開発しています。

あるイベントを発生するクラスをVB.NETで使用したいのですが、記述方法が分からず困っています。そのクラスを使用するサンプルコードはC#で以下のように書かれています。C#で実行した結果問題なくビルドして実行できる事を確認しています。
AclassClient _Client = null;
AclassContext context = new AclassContext(this);
_Client.Advise += new DdeClient.AdviseEventHandler(this.OnAdviseReceived);

OnAdviseReceivedは使用するFormクラスに以下のように定義します。
private void OnAdviseReceived(object sender, DdeClient.AdviseEventArgs args)
{
   省略
}

上記のコードをVB.NETで書こうとするとイベントの登録行でエラーとなってしまいます。
_Client.Advise += new DdeClient.AdviseEventHandler(Me.OnAdviseReceived)
まずこのAdviseがなぜかVBだとインテリセンスで表示されません。C#では稲妻マークとともに表示されます。とりあえず手書きで入力してコンパイルすると「OnAdviseReceivedパラメータargsに対して引数が足りない」となってしまいます。しかしC#では特にパラメータを指定していないし、足りないのならsender,argsの2つとも足りないはずです。これは定義方法が間違っていると思うのですが、原因が分かりません。
イベントを発生するクラスを使用する時の宣言方法はC#とVB.NETでは扱いが変わるのでしょうか?

よろしくおねがいします。
Hongliang
ぬし
会議室デビュー日: 2004/12/25
投稿数: 576
投稿日時: 2005-10-14 17:52
Visual Basic 言語の仕様 7.3 イベント
FX
常連さん
会議室デビュー日: 2004/12/06
投稿数: 49
投稿日時: 2005-10-14 19:10
Hongliangさんレスありがとうございます。
サイトを参考にして
_Client.Advise += new DdeClient.AdviseEventHandler(Me.OnAdviseReceived)
の部分を以下のように書き直しました。
AddHandler _Client.Advise, AddressOf OnAdviseReceived

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

スキルアップ/キャリアアップ(JOB@IT)