C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VB6で宣言のeventはC#ではどうなるのでしょうか?


(過去ログ 57 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■32372 / inTopicNo.1)  VB6で宣言のeventはC#ではどうなるのでしょうか?
  
□投稿者/ tamaboyo (48回)-(2009/02/05(Thu) 16:45:40)

分類:[C#] 

tamaboyoです。
ただいま、VB6で作成しているユーザーコントロールをC#に移行中です。

元々、VB6で
Event Clicked(Index As Integer, nMode As Integer)
と宣言したエベントがあります。
これを呼ぶのは、ラベルのクリックイベントの中で、処理の一番最後に
RaiseEvent Clicked(Index, nMode)
で呼んでいました。

これをC#で実装したいのですが、宣言を
event Clicked(object sender, EventArgs e);
とすると、
「無効なトークン '(' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。」
とエラーが出ましたので、引数不要?と思い消してみたところ、
「無効なトークン ';' が クラス、構造体またはインターフェイスのメンバ宣言で使用されています。」
に変わりました。
また、ハンドラ名がたりないのかな?と思い宣言を
public event ClickedHandler Clicked(object sender, EventArgs e);
に変更しましたら、今度は
「; または = を指定してください (宣言の中にコンストラクタ引数は指定できません)。」
のエラーに変わりました。

そもそも、イベントを使う際にはdelegateを使わないといけないのでしょうか?
なんかこの辺をうろうろしていて抜け出せていないので、何かヒントをいただけないでしょうか?

環境はCS2005です。
宜しくお願いします。
引用返信 編集キー/
■32375 / inTopicNo.2)  Re[1]: VB6で宣言のeventはC#ではどうなるのでしょうか?
□投稿者/ あ (46回)-(2009/02/05(Thu) 17:06:33)
参考までにどうぞ
http://dobon.net/vb/dotnet/vb2cs/event.html
引用返信 編集キー/
■32384 / inTopicNo.3)  Re[2]: VB6で宣言のeventはC#ではどうなるのでしょうか?
□投稿者/ tamaboyo (49回)-(2009/02/05(Thu) 17:44:28)
あ さん、ありがとうございます。

> 参考までにどうぞ
> http://dobon.net/vb/dotnet/vb2cs/event.html

上記を参考に、宣言を以下に変更すると、エラーはなくなりました。
public event EventHandler Clicked;
protected virtual void OnClicked(object sender, EventArgs e)
{
if (Clicked != null)
{
Clicked(this, e);
}
}
としたら、コンパイルが通るようになりました。

他のエラーがまだ残っているので動作確認はできていないのですが、一歩先に進むことができました。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -