DOBON.NET DOBON.NETプログラミング掲示板過去ログ

イベントハンドラについて

環境/言語:[VB.NET2005、XP]
分類:[.NET]

お世話になっております。HogeHoge改めほおげほおげです。

VB2005のヘルプにある「イベントとイベント ハンドラ」にある記述について
どなたか補足説明頂きたくお願いします。

############################################################
イベント ハンドラ
イベント ハンドラは、対応するイベントが発生したときに呼び出されるプロシージ
ャです。シグネチャの一致する任意の有効なサブルーチンをイベント ハンドラとし
て使用できます。ただし、イベント ハンドラはイベント ソースに値を返すことが
できないため、関数をイベント ハンドラとして使用することはできません。

Visual Basic は、イベント ハンドラに対して、イベント センダ名、アンダースコ
ア、およびイベント名を組み合わせた標準名前付け規則を使用します。たとえば、
button1 という名前のボタンの Click イベントは Sub button1_Click という名前
になります。
############################################################

この説明を元にしますと、イベント ハンドラとはbutton1_Click内に書くコード
を指す、という認識でいいのでしょうか?
仮にこの認識で正しい場合ですが

############################################################
イベント ハンドラ

ただし、イベント ハンドラはイベント ソースに値を返すことが
できないため、関数をイベント ハンドラとして使用することはできません。
############################################################

イベント ソースとは、プログラム内で確認することができる具体的な
箇所を指しているのでしょうか?
> イベント ハンドラとはbutton1_Click内に書くコードを指す、という認識でいいのでしょうか?
というか button1_Click メソッドそのものがイベントハンドラです。
イベントが起こるとイベントハンドラが呼び出され、その結果 button1_Click 内の記述が実行されます。

> イベント ソースとは、プログラム内で確認することができる具体的な箇所を指しているのでしょうか?
例えば Button の Click イベントなら、イベントソースは Button になります。
より細かく言うと RaiseEvent を行う箇所です。
// VS2008 なら Button の中まで追っかけられますかね。
> この説明を元にしますと、イベント ハンドラとはbutton1_Click内に
> 書くコードを指す、という認識でいいのでしょうか?

だいたいあっていると思いますが、より正確な表現としては、
「イベントハンドラ = button1_Clickプロシージャ」です。
button1_Click内に書くコードはイベントハンドラの処理です。

■No21658に返信(ほおげほおげさんの記事)
> 仮にこの認識で正しい場合ですが
>
> ############################################################
> イベント ハンドラ
> 略
> ただし、イベント ハンドラはイベント ソースに値を返すことが
> できないため、関数をイベント ハンドラとして使用することはできません。
> ############################################################
>
> イベント ソースとは、プログラム内で確認することができる具体的な
> 箇所を指しているのでしょうか?

ButtonのClickイベントは、Buttonクラス内でクリックされたタイミングに発生します。言い換えるとButtonクラスがClickイベントを発生させています。
この文章で言うところの「イベントソース」はButtonクラス内のClickイベントを発生させている箇所のことです。

イベントも発生させる側から見れば、メソッドの呼び出しのようなものです。
Functionプロシージャなら値を返せますが、Subプロシージャでは値を返せません。
イベントハンドラはSubプロシージャの形と決まっているので、イベントハンドラは関数(=Functionプロシージャ)じゃダメですよ、というようなことが説明されています。
Hongliangさん、よねKENさん、ありがとうございました。

おかげさまで胸のつかえが取れました。

また機会がありましたらどうぞ宜しくご教示ください。
解決でした。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板