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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.99449 の関連記事表示

<< 0 >>
■99449  Re[1]: フラグが変化したときに発生するイベントを作りたい
□投稿者/ 魔界の仮面弁士 -(2022/04/12(Tue) 18:12:57)
    No99448 (あいす さん) に返信
    > C#でボタンをクリックしたら発生するイベントのように
    > 自分が用意したフラグが変化したら発生するイベントを
    > 作りたいのですがどのようにすればいいのでしょうか。

    フラグは変数ではなくプロパティとして実装しておけば、
    setter によって「フラグが変更された時」を捕らえる事ができますね。

    プロパティの代わりに、「フラグを更新するためのメソッド」を作る方法でも良いですが。


    肝心のイベントの宣言は、自作クラス内で
    「public event EventHandler YourEventName;」
    のようにすれば OK。

    作ったイベントを発生させるのは
     YourEventName?.Invoke(this, EventArgs.Empty);
    という構文です。


    たとえば上記を内部から呼びやすくするため、
     protected virtual void OnYourEventName(EventArgs e)
     {
      YourEventName?.Invoke(this, e);
     }
    などを用意しておき、「フラグが変化した時」に、自クラスまたは継承クラスから
    『OnYourEventName(EventArgs.Empty);』で呼び出すようにします。


    イベントの利用側は、ボタンクリックの
     button1.Click += ……;
    と同様に、
     foo.YourEventName += ……;
    のように割り当てて使います。


    もしもイベント引数に追加情報を持たせい場合には、
    「EventArgs を継承した、自作の HogeEventArgs クラス」を作り、
    そこに追加のプロパティやメソッドを実装し、下記のように変更します。


    //public event EventHandler YourEventName;
    public event EventHandler<HogeEventArgs> YourEventName;
記事No.99448 のレス /過去ログ173より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -