ここから本文です

vb.netでのイベントの使用方法(こういう時に効果を発揮する的)はどういう時でし...

nhq********さん

2008/10/2506:28:50

vb.netでのイベントの使用方法(こういう時に効果を発揮する的)はどういう時でしょうか?
色々サイトを見て回ったけど、いまいちわかりません。。

閲覧数:
1,077
回答数:
2
お礼:
25枚

違反報告

ベストアンサーに選ばれた回答

ttkai00さん

2008/10/2509:41:47

そうですね。もう少し具体例とかを挙げて、質問の意図は明確にされた方がよいと思います。

自作イベントなど、イベントの一般的な話をされているという前提で答えます。.NET でのイベントというのは、クラスを使う側が、ある特定のタイミングで特定の処理を行いたいときに便利なものです。

ある特定のタイミングで行われる処理をそのクラス自体で定義せず、クラスを使う側が自由に決められるようにしたいという考え方です。ただし、このタイミングはクラス側の設計者が考えますので、クラス側の設計者はクラスの使われ方を想定した上で、イベントを公開する必要があります。本来はそのクラスの中の処理を、使う側に委ねるという意味で、オブジェクト指向における「委譲」という考え方に相当します。

「委譲」自体は、オブジェクト指向の重要な概念の1つです。この機能を使うことによってクラスの再利用性が向上します。「オブジェクト指向 委譲」あたりで検索すれば山のように情報が出てきますので、調べてみることをお勧めします。この「委譲」をインタフェースを新たに定義したりすることなく、簡単に使用することができるのがイベントだとも言えると思います。

ちなみによく .NET と対比される Java には、イベントという概念は(少なくとも言語仕様上は)ありません。ただしインタフェースを活用することによって、同じような機能を実装することは可能です。

イベントの具体例は .NET Framework にいくらでもありますので、それを見ていただくのがわかりやすいのですが…特にコントロール周りはイベントだらけですよね。たとえば Windows フォームのコントロールである Button (System.Windows.Forms.Button) には数多くのイベントが定義されています。

「Click」というイベントはボタンがクリックされたときに特定の処理を行いたい場合に使用されます。Button クラスの設計者は、このクラスの使われ方を想定して、「クリックされたときに行う処理はクラスの中に書くのではなくて、クラスを使う側が自由に決められるようにしたい。」と考えてこのような設計にしたと思います。(逆にクリックされたときに行う処理が決まっているボタンなんて使えませんよね。)

イベントはコントロールでよく使用されますが、何もコントロールに限ったものではありません。もう1つ別の例として、WebClient というクラス (System.Net.WebClient) を挙げておきます。このクラスは特定のURIとのデータの送受信を行うクラスです。(ダウンローダーのようなソフトを作るのに使われるクラスです。)

ダウンロードは時間のかかる処理ですので、非同期にファイルのダウンロードを行う DownloadFileAsync というメソッドがあります。これを使うとバックグラウンドでダウンロード処理を行うことができます。

しかし、多くの場合、ダウンロードが終了したことをアプリケーションで検知する必要があります。たとえば「ダウンロードが完了しました。」というメッセージを出したい場合などです。こういうときのために、WebClient クラスは DownloadFileCompleted というイベントを公開しています。このイベントはダウンロードが完了したときに発生します。例えばクラスを使う側が、このイベントをハンドルしてメッセージを表示するということが可能になるわけです。

質問した人からのコメント

2008/10/30 07:02:04

降参 丁寧な回答ありがとうございます、イベントの概要がわかりました!

ベストアンサー以外の回答

1〜1件/1件中

ふゆきたさん

編集あり2008/10/2513:55:09

普通のアプリケーションは、イベントドリブンが基本だと思いますが……

ユーザの操作は、すべてイベント。


GUIでイベントを使わないプログラムの方が難しいと思います。

何を聞きたいのか、ぽいんとがいまいちわかりません。。。



■追記■

でりげーと?

それ以前?


VB.NETでフォームを使用したアプリを作成した場合、フォームでの処理は全て
イベントと言っても良いでしょう・・・

GUIを効果的に使うためのものがイベントそのものですから、効果を発揮と言われ
ても・・・・・・

( 既に発揮しちゃってますよ?^^; )

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる