1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【C#】イベントってクリックしたときの動作じゃないの?と思ってた自分へ

1
Posted at

はじめに

イベントってクリックとかしたときに呼ばれるやつだよね~
と思ってたのですが、どうやら「呼ばれるやつ」はイベントではなさそう…?

結論

イベントの役割は通知するだけ
…正直よくわからない。文章だけだとわからないけど、コードをゆっくり追えば大丈夫でした。

書き方

イベント

まずはイベントそのものを宣言。
デリゲートの型は ○○Handler という形が多そう。

// テンプレート
修飾子 event デリゲトの型 イベント名
// 例
public event EventHandler Click;

登録

調べると購読とも言うらしい?このあたりはまだ曖昧なので誤りあれば修正します。

// テンプレート
クラス.イベント名 += 関数(イベントハンドラ)
// 例
this.button.Click += calc_Sum;

流れ

  1. ボタンをクリックする
  2. Click「イベント起きたでー!calc_Sumー!!」
  3. calc_Sum「聞こえとるで。ほな計算するでー」

冒頭でも言った通り、イベント(Click)は通知するだけ。登録してる関数を呼ぶだけ。
なにも登録してなければ、イベントは何もしません。
通知自体は処理として見えないせいか、処理(calc_Sun)をイベントだと勘違いしてしまったのが混乱の始まり。

ついでによく見るInvokeについても

個人的に混乱したので。
とある動画教材で「InvokeはUIスレッドを呼ぶので~」と聞いたのがきっかけ。

イベント名?.Invoke();

え、でも画面(UI)関係ないイベントもあるよね??
加えて↓のコードも見て余計混乱。

Dispatcher.Invoke(() => {
	画面操作
});

Invokeは日本語で…?

呼び出すという意味。そう聞くと途端に理解できました。
なのでイベント名?.Invoke();は「イベントを呼ぶ」
「UIスレッドを呼ぶ」のはDispatcher.Invoke()でした。
日本人には同音異義語にしか見えんかったんや……

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?